【问题标题】:Primefaces 3.4: DataTable and CommandLink column with f:setPropertyActionListener throws javax.el.ELException: java.lang.IllegalArgumentExceptionPrimefaces 3.4:带有 f:setPropertyActionListener 的 DataTable 和 CommandLink 列抛出 javax.el.E​​LException: java.lang.IllegalArgumentException
【发布时间】:2012-11-06 07:35:30
【问题描述】:

我有这个数据表,其中包含一个客户列表和一个 Edit commandLink 列。我需要打开一个对话框来显示客户端的数据,并且我正在尝试使用 f:setPropertyActionListener 将 Client 对象发送到 bean 对话框,使用用于 dataTable 行的变量 cli

<p:dataTable id="tblClients" var="cli" value="#{clientsBean.clients}" rowKey="#{cli.id}">

   <p:column>  
      <p:commandLink id="lnkEdit" value="Edit" action="#{clientBean.start}" process="@this" update="dlgClient" oncomplete="dialogClient.show()">
         <f:setPropertyActionListener target="#{clientBean.client}" value="#{cli}" />
      </p:commandLink>
   </p:column>             

   <p:column headerText="Name" sortBy="#{cli.name}" id="name">
      #{cli.name}
   </p:column>
   ...
</p:dataTable> 

但是当我点击编辑按钮时,会抛出这个错误:

java.lang.IllegalArgumentException:无法将 java.lang.String 类型的 test.Client@95 转换为 test.Client 类

我确定 clientBean.client 是 Client 类型,它的 getter 和 setter 是正确的。

是否可以以任何方式引用 dataTable 变量? 我需要实现一个转换器来完成这个任务吗?

任何帮助,我将不胜感激, 谢谢。

【问题讨论】:

    标签: jsf-2 datatable primefaces commandlink


    【解决方案1】:

    这就是我解决的方法,您可以将 cli 变量作为参数发送给 start 函数:

    <p:dataTable id="tblClients" var="cli" value="#{clientsBean.clients}" rowKey="#{cli.id}">
    
       <p:column>  
          <p:commandLink id="lnkEdit" value="Edit" action="#{clientBean.start(cli)}" process="@this" update="dlgClient" oncomplete="dialogClient.show()">
             <f:setPropertyActionListener target="#{clientBean.destinyProperty}" value="#{clientsBean.sourceProperty}" />
          </p:commandLink>
       </p:column>             
    
       ...
    </p:dataTable>
    

    在clietBean中可以像这样接收这个参数:

    public void start(Client currentClient) {
    
        this.client = currentClient;
        ...        
    }
    

    这可以与 f:setPropertyActionListener 参数混合使用。

    谢谢。

    【讨论】:

      猜你喜欢
      • 2016-06-10
      • 1970-01-01
      • 1970-01-01
      • 2013-11-14
      • 1970-01-01
      • 1970-01-01
      • 2016-05-29
      • 1970-01-01
      • 2015-12-07
      相关资源
      最近更新 更多