【发布时间】:2015-01-22 04:28:17
【问题描述】:
当我使用以下代码时,出现 java.lang.IllegalArgumentException 错误。
<h:dataTable value="#{toDoBean.toDoItemList}" var="toDoItem" >
<h:column>
<h:selectBooleanCheckbox value="#{toDoItem.finsh}"
valueChangeListener="#{toDoBean.onStatusChange}"
onchange="submit()"/>
</h:column>
<h:column>
<h:outputText value="#{toDoItem.title}"/>
</h:column>
<h:column>
<h:commandButton value="X" actionListener="#{toDoBean.onDelete}">
<f:attribute name="id" value="#{toDoItem.title}" />
</h:commandButton>
</h:column>
</h:dataTable>
但是如果我换了
<f:attribute name="id" value="#{toDoItem.title}" />
与
<f:attribute name="id" value="testing" />
然后一切正常。
所以我的假设是“我不能将 EL 与 f:attribute 一起使用”。
- 我说的对吗?
- 为什么?
- 有没有办法在 f:attribute 中使用 el?
【问题讨论】:
-
“f:attribute”标签允许您将属性值传递给组件,或通过动作监听器将参数传递给组件。
-
#{toDoItem.title}是否解析为String?您的<h:dataTable>中的每一行是否都填充了title? -
你应该展示你的 managedbean。
-
yes #{toDoItem.title} 解析为字符串。