挂毯:java.lang.NullPointerException 在 org.apache.tapestry5.internal.util.SelectModelRenderer.option(SelectModelRenderer.java:49)
Tapestry: java.lang.NullPointerException at org.apache.tapestry5.internal.util.SelectModelRenderer.option(SelectModelRenderer.java:49)
我想使用 OptionGroupModel 和 OptionModel 在挂毯中实现 groupListing。 SelectModelImpl 出现空指针错误。
我不知道我哪里出了问题。另一个问题是,当我设法使用另一种方式在组中显示它们时,selected 模型在 deselected 时刷新页面,同时保持未selected.
<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>
公式抓取代码如下:
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;
}
请在我出错的地方帮助我。我想要实现的是当 select 项目时,我也应该 return 它们到可用列表。
我通过创建一个 javascript 文件来解决这个问题,该文件将结果移动到选定的一侧,反之亦然,我还使用 tag
在 javascript 文件中创建了组
我想使用 OptionGroupModel 和 OptionModel 在挂毯中实现 groupListing。 SelectModelImpl 出现空指针错误。 我不知道我哪里出了问题。另一个问题是,当我设法使用另一种方式在组中显示它们时,selected 模型在 deselected 时刷新页面,同时保持未selected.
<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>
公式抓取代码如下:
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;
}
请在我出错的地方帮助我。我想要实现的是当 select 项目时,我也应该 return 它们到可用列表。
我通过创建一个 javascript 文件来解决这个问题,该文件将结果移动到选定的一侧,反之亦然,我还使用 tag
在 javascript 文件中创建了组