2014-11-24 66 views
-1

当我使用下面的代码时,我得到java.lang.IllegalArgumentException错误。我不能在f:属性中使用jsf 2.0 el表达式吗?

<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:属性”。

  1. 我说错了吗?
  2. 为什么?
  3. 有没有办法在f:属性中使用el?
+0

“F:属性”标签允许您将属性值传递到组件,或通过动作侦听器的参数的组件。 – Scorpion 2014-11-24 12:49:12

+0

'#{toDoItem.title}'是否解析为'String'? “”中的每一行是否填有“标题”? – 2014-11-24 13:03:08

+0

您应该显示您的managedbean。 – wittakarn 2014-11-24 15:53:22

回答

0

您的toDoItemList列表是否有字段标题?如果是的话,标题是否有getter和setter? 还请查看

jsf f:attribute

+0

当然,我的ToDoItem类中有正确的getter和setter。你可以假设我的托管bean和其他类是正确的。 – FranXho 2014-11-25 12:55:29