Ich möchte GroupListing in Tapisserie mit OptionGroupModel und OptionModel erreichen. Ich bekomme einen NULL-Zeigerfehler mit dem SelectModelImpl. Ich weiß nicht, wo ich damit falsch liege. Ein weiterer Nachteil ist, dass wenn ich sie in der Gruppe auf eine andere Weise anzeigen kann, die ausgewählten Modelle, wenn sie abgewählt werden, die Seite aktualisieren, während sie nicht ausgewählt bleiben. Tapestry: java.lang.NullPointerException bei org.apache.tapestry5.internal.util.SelectModelRenderer.option (SelectModelRenderer.java:49)
<div t:type="ck/Tooltip" title="${message:savedCriteria.ttpTitle}" value="${message:savedCriteria.ttpValue}" effect="appear">
<t:select t:id="SavedCriteria" validate="required" model="savedCriteria" value="prop:currentCriteria" t:mixins="OnSelectChangeActionLink" optionModels="savedCriteria.options" selectChangeEncoder="singleValueEncoder" />
</div>
Der Code, um die Formulare für die Ergreifung ist wie folgt:
public SelectModel getFormulas() throws Exception {
//return new SelectModelImpl(createOptionGroups(getFormulaList(), getFormulaLabelList()), null);
//return new SelectModelImpl(selectService.getFormulaGroupByWhereClause("T_FORMULALIST", "ID", "FORMULANAME", "LOCALEPARENT", LanguageQueries.getLanguageByCode(getUserLanguage()), "showInAnalyzer", true, this.listFormulas), null);
return new AbstractSelectModel() {
private List<OptionGroupModel> groupModels = null;
public List<OptionModel> getOptions() {
return null;
}
public List<OptionGroupModel> getOptionGroups() {
if (groupModels == null) {
computeModel();
}
return groupModels;
}
private void computeModel() {
groupModels = createOptionGroups(getFormulaList(), getFormulaLabelList());
}
};
}
private List<OptionGroupModel> createOptionGroups(LinkedHashMap<String, Integer> formulaList, LinkedHashMap<String, String> formulaLabelList)
{
final List<OptionGroupModel> optGroupList = new ArrayList<OptionGroupModel>();
for (Iterator<?> iterator = formulaLabelList.keySet().iterator(); iterator.hasNext();) {
String key = (String) iterator.next();
String group = formulaLabelList.get(key);
List<OptionModel> optList = new ArrayList<OptionModel>();
for (Iterator<?> i = formulaList.keySet().iterator(); i.hasNext();) {
String optionKey = (String) i.next();
Integer option = formulaList.get(optionKey);
String optionCompare = formulaList.get(optionKey).toString();
if(key.equalsIgnoreCase("Uncategorized") && option == null){
optList.add(new OptionModelImpl(optionKey, option));
} else if((optionCompare.contains(group)) && !(optionKey.contains("*"))) {
optList.add(new OptionModelImpl(optionKey, option));
}
}
if(optList.size() > 0) {
OptionGroupModel groupModel = new OptionGroupModelImpl(key, false, optList);
optGroupList.add(groupModel);
}
}
return optGroupList;
}
Bitte helfen Sie mir helfen, wo ich falsch werde. Was ich erreichen möchte ist, wenn ich Gegenstände auswähle, sollte ich sie auch in die verfügbare Liste zurückbringen.