在JSF 1.1中,我在传递值方面遇到了很多麻烦。我将值从bean传递给JSF页面,但它们没有被传回,导致NullPointerException。 bean中的declareFinishList由在页面上显示的初始化方法填充,但是当我提交时,我在for (DeclareFinish df : declareFinishList)
得到一个nullpointer异常,表明它没有被传回。地图declaredFinishMap
也显示为null。我之前已经这样做了,所以我不明白为什么这个特别的人遇到麻烦而我的其他类似的桌子工作正常。
declareFinishList
将其置于会话范围内,但我似乎无法通过declaredFinishMap
。
要注意,bean由faces-config.xml中的rsaleController定义。整个页面都包含在h:表单中,我没有包含。
豆:
public class RetailSaleController extends BaseBean {
private List<DeclareFinish> declareFinishList;
private Map<DeclareFinish, Boolean> declaredFinishMap = new LinkedHashMap<DeclareFinish, Boolean>();
public void saveDeclareFinishList(ActionEvent event) {
List<DeclareFinish> list = new ArrayList<DeclareFinish>();
for (DeclareFinish df : declareFinishList) {
if(declaredFinishMap.get(df)) {
list.add(df);
}
}
}
}
页:
<h:panelGroup id="declareFinishListPanel">
<rich:dataTable id="declareFinishItemTable" border="1"
value="#{rsaleController.declareFinishList}" var="item"
<rich:column width="16">
<f:facet name="header">
<rich:spacer height="24px;" />
</f:facet>
<h:outputText value="#{rowNo+1}" />
</rich:column>
<rich:column style="text-align:center;">
<f:facet name="header">
<h:outputText value="Locked" />
</f:facet>
<h:selectBooleanCheckbox id="reset"
value="#{rsaleController.declaredFinishMap[item]}" />
</rich:column>
<rich:column sortBy="#{item.dealerId}" sortIcon="none;" width="110">
<f:facet name="header">
<h:outputText value="#{labels.crmsFldLabDealer}" />
</f:facet>
<h:outputText value="#{item.dealerId}" />
</rich:column>
</rich:dataTable>
</h:panelGroup>
<a4j:commandLink reRender="declareFinishItemTable"
actionListener="#{rsaleController.saveDeclareFinishList}">
<h:graphicImage value="/images/save.gif" title="Save changes"
style="height:16;width:16;border-style:none;vertical-align:middle" />
</a4j:commandLink>
答案 0 :(得分:1)
只看代码snippit,declareFinishList
没有在任何地方初始化,除非代码中的其他地方。