私はprimefaces 3.3.1、mojarra 2.1.3、netbeans 7.0.1を使用しています。
<p:dataTable id="approvalchainstable" var="department" value="#{viewApprovalChain.wfdepartments}">
<p:columnGroup type="header">
<p:row>
<p:column colspan="4" headerText="#{bundle.DepartmentNameFieldLabel}" />
</p:row>
<p:row>
<p:column headerText="#{bundle.PostNameFieldLabel}"/>
<p:column headerText="#{bundle.ItemCountLabel} #{bundle.ApprovalLevelNameFieldLabel}"/>
<p:column headerText="#{bundle.ViewLabel}"/>
<p:column headerText="#{bundle.LabelDelete}"/>
</p:row>
</p:columnGroup>
<p:subTable var="approvalchain" value="#{department.wfApprovalchainCollection}">
<f:facet name="header">
#{department.wfDepartmentName}
</f:facet>
<p:column>
#{approvalchain.idWfPost.wfPostName}
</p:column>
<p:column>
#{approvalchain.wfApprovalchainLevel}
</p:column>
<p:column>
<h:link outcome="/viewApprovalChainDetails" value="#{bundle.ViewLabel}">
<f:param name="idWfApprovalChain" value="#{approvalchain.idWfApprovalchain}"/>
</h:link>
</p:column>
<p:column>
<p:commandButton value="#{bundle.LabelDelete}"
title="Delete"
icon="ui-icon-trash"
action="#{viewApprovalChain.removeOneApprovalchain(approvalchain)}">
</p:commandButton>
</p:column>
</p:subTable>
</p:dataTable>
そして、これが ViewScoped マネージド Bean メソッドです -> 上記のアクション呼び出しから渡されたパラメーターは、マネージド Bean で null に解決されます。したがって、 NullPointerException エラーが発生しました。
public String removeOneApprovalchain(WfApprovalchain wfapprovalchaintoremove) {
try {
LogController.log.info("Removing approval chain flow for application " +
wfapprovalchaintoremove.getIdWfApplication().getWfApplicationName() +
" applicable for " + wfapprovalchaintoremove.getIdWfPost().getWfPostName() +
" in " + wfapprovalchaintoremove.getIdWfDepartment().getWfDepartmentName());
wfApprovalchainFacade.remove(wfapprovalchaintoremove);
LogController.log.info("Reloading department names for the select one box");
wfdepartments = wfDepartmentFacade.selectAll();
} catch (Exception ex) {
LogController.log.fatal(ex.toString());
} finally {
return null;
}
}
私はそれを正しくやったとかなり確信しています。しかし、wfapprovalchaintomove オブジェクトのパラメーターが常に null に解決されるのはなぜでしょうか? パラメータが素数サブテーブル内で正しく渡されないのはなぜですか? サブテーブルなしでデータテーブル内で試してみましたが、正しく機能しています。助けてください、あなたの助けは大歓迎です。