Jsf 如何使用参数调用方法表达式?
我可以像这样将表达式作为方法表达式参数传递吗Jsf 如何使用参数调用方法表达式?,jsf,jsf-2,Jsf,Jsf 2,我可以像这样将表达式作为方法表达式参数传递吗 <p:dataTable id="gridRPBDetails" var="rpbDetail" value="#{tInputBean.detailList}" selection="#{tInputBean.selectedDetails}"> .... <p:commandButton process="@this" action="#{tInputBean.querySubAng
<p:dataTable id="gridRPBDetails" var="rpbDetail"
value="#{tInputBean.detailList}"
selection="#{tInputBean.selectedDetails}">
....
<p:commandButton
process="@this"
action="#{tInputBean.querySubAnggaranListImpl(rpbDetail.map['budget'])}" ... />
....
</p:datatable>
这是我的操作方法请注意rpbDetail.map['budget']是DataTransferObject的一种类型,因此它应该正好适合:
public void querySubAnggaranListImpl(DataTransferObject budget) {
DebugUtil.start("querySubAnggaranListImpl");
String budgetId = budget.getString("id");
// cari subbudgetlist berdasarkan budgetId
this.comboChainSubAnggaranList = ch.execute("common", "GetSubBudgetList",
new DataTransferObject()
.putString("budgetId", budgetId))
.getList("result");
DebugUtil.end("querySubAnggaranListImpl");
}
我出于依赖性尝试了此操作:action={tInputBean.querySubAnggaranListImpl{rpbDetail.map['budget']},最后在我的浏览器上出现以下错误消息:
/TInput.xhtml@161,40
action={tInputBean.querySubAnggaranListImpl{rpbDetail.map['budget']}
标识符[]不是有效的Java
第1.19节要求的标识符
EL规范标识符的定义
:=Java语言标识符。这
可以通过设置
系统属性
org.apache.el.parser.SKIP_IDENTIFIER_CHECK
这是真的
如何像上面的例子一样将参数传递给方法表达式
谢谢大家! 我终于发现这是我的错误。应该是
rpbDetail.map.subBudget.map.budget.
rpbDetail.map.budget返回null,因此出现了NullPointerException。有趣的问题,我可能希望稍后再尝试重现。现在,试试rpbDetail.map.budget。@BalusC:你好,谢谢你的主意。我终于发现这是我的错误。它应该是rpbDetail.map.subBudget.map.budget。rpbDetail.map.budget返回null,因此是NullPointerException。啊,尽管如此,它不应该抛出这种NPE。您使用的servletcontainer/EL impl是什么?我想Tomcat 7.x的标准配置是吧?@BalusC:哦,我明白了。Tomcat 7.0.8。而el解析器是。。org.springframework.web.jsf.el.SpringBeanFacesELResolver,spring版本为3.0.5.RELEASE。
rpbDetail.map.subBudget.map.budget.