我有类似的缩放到biological classification。我正在寻找一种挂毯组件,可以更快地链接它们。
但是,我仅限于挂毯5.2.6。

@Entity
public class Species implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @NonVisual
    private Long Id;
    @Basic(optional = false)
    private String Name;
    @ManyToOne
    @NotFound(action = NotFoundAction.IGNORE)
    private Kingdom kingdom;
    //getter and setter frod data above
}

@Entity
public class Kingdom implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @NonVisual
    private Long Id;
    @Basic(optional = false)
    private String Name;
    @OneToMany
    private Collection<Species> speciesCollection;
    //getter and setter frod data above
}


我们已经在数据库中输入了1000种物种记录,并希望将它们链接起来。
我知道的唯一解决方案是在具有表的表单内部使用select对象,该对象具有复杂的代码。我认为使用GenericValueEncoder。

<td><t:label for="species"/></td><td><t:selectObject t:id="species" blankOption="never" list="speciesList" value="species" labelField="literal:name"/></td>


当然,对于每个输入的种类,selectobject的工作原理与palette或循环复选框(在我的版本中不可用)相比,确实非常慢。

但是,主要问题仍然是我不了解调色板Java代码。
许多变量都有下划线,谁知道呢?

由于到处都没有评论,
很难理解做什么
但是我认为我需要更改第14行。

使用GenericValueEncoder而不是EnumValueEncoder
和GenericSelectModel代替EnumSelectModel。

如果可以通过实体对象成功实现调色板,请告诉我该怎么做?

最佳答案

这是我们使用的调色板示例。在我使用“帐户”的地方,您可以用“物种”代替它。

@Component(id = "accountsPalette", parameters = {
        "label=literal:My palette",
        "selected=selectedAccountsIds",
        "model=availableAccountIdsModel",
        "encoder=accountsEncoder"})
private Palette accountsPalette;

public SelectModel getAvailableAccountIdsModel() throws Exception {

    final List<OptionModel> options = new ArrayList<OptionModel>();

    for(Account account : availableAccounts) {

        options.add(new OptionModelImpl(account.getFullNameSingleType(), account.getId()));
    }

    return new AbstractSelectModel() {

        public List<OptionModel> getOptions() {
            return options;
        }

        public List<OptionGroupModel> getOptionGroups() {
            return null;
        }
    };
}

public ValueEncoder<Long> getAccountsEncoder(){
    return new ValueEncoder<Long>() {

        public String toClient(Long value) {
            return value.toString();
        }

        public Long toValue(String clientValue) {
            return Long.parseLong(clientValue);
        }
    };
}

public List<Long> getSelectedAccountsIds() {
    return selectedAccountIds;
}

public void setSelectedAccountsIds(List<Long> selectedAccountIds) throws Exception {
    ..... deal with the selected ids .....
}

07-26 04:13