Java 如何从呈现的h:outputText将参数传递给方法?

Java 如何从呈现的h:outputText将参数传递给方法?,java,jsf,richfaces,el,ajax4jsf,Java,Jsf,Richfaces,El,Ajax4jsf,我正在显示一个sql查询中的数据表,并希望根据此sql查询中的一个字段值呈现一段代码 视图:records.xthml <table> <thead> <tr> <td>#{messages['table.header.id']}</td> <td>#{messages['table.header.name']}</td> <td>#{messages[

我正在显示一个sql查询中的数据表,并希望根据此sql查询中的一个字段值呈现一段代码

视图:records.xthml

<table>
  <thead>
    <tr>
      <td>#{messages['table.header.id']}</td>
      <td>#{messages['table.header.name']}</td>
      <td>#{messages['table.header.date.added']}</td>
      <td>&nbsp;</td>
    </tr>
  </thead>
  <tbody>
    <a4j:repeat value="recordListBean.records" var="listedRecord" rowKeyVar="index">
      <tr>
        <td><h:outputText value="#{listedRecord.id}</td>
        <td><h:outputText value="#{listedRecord.name}</td>
        <td>
          <h:outputText value="#{listedRecord.dateAdded}" rendered="#{viewRecordBean.currentRecord(listedRecord.id)}" />
          <h:outputText value="#{messages['table.header.record.archived']}" rendered="!#{viewRecordBean.currentRecord(listedRecord.id)}" />
        </td>
      </tr>
    </a4j:repeat>
  </tbody>
</table>

#{messages['table.header.id']}
#{messages['table.header.name']}
#{messages['table.header.date.added']}

你只有一个错误:
必须进入EL表达式内部

即,这是无效的:

rendered="!#{viewRecordBean.currentRecord(listedRecord.id)}" 
应该是:

rendered="#{!viewRecordBean.currentRecord(listedRecord.id)}" 

对于剩余部分,假设您的环境支持EL2.2,它看起来应该可以正常工作。我只会使用
,因为这样可以消除HTML样板文件。

您只有一个错误:
必须进入EL表达式内部

即,这是无效的:

rendered="!#{viewRecordBean.currentRecord(listedRecord.id)}" 
应该是:

rendered="#{!viewRecordBean.currentRecord(listedRecord.id)}" 

对于剩余部分,假设您的环境支持EL2.2,它看起来应该可以正常工作。我只会使用
,因为这样可以消除HTML样板文件。

感谢您的快速响应!!我是JSF/Java/EL等的新手。如何判断我的堆栈支持什么EL?取决于服务器和web.xml版本。另请参见,我似乎正在使用jboss-el-2.0.1。现在,我需要保留HTML样板文件,所以我仍然需要使用
a4j:repeat
选项。当我这样做时,
listedRecord.id
拒绝将
viewRecordBean.currentRecord(listedRecord.id)
方法作为null以外的任何内容。我不确定如何获得实际价值。我的错误。。。这确实有效。我现在已经能够验证参数值是否确实正确传递。再次感谢你的帮助!!谢谢你的快速回复!!我是JSF/Java/EL等的新手。如何判断我的堆栈支持什么EL?取决于服务器和web.xml版本。另请参见,我似乎正在使用jboss-el-2.0.1。现在,我需要保留HTML样板文件,所以我仍然需要使用
a4j:repeat
选项。当我这样做时,
listedRecord.id
拒绝将
viewRecordBean.currentRecord(listedRecord.id)
方法作为null以外的任何内容。我不确定如何获得实际价值。我的错误。。。这确实有效。我现在已经能够验证参数值是否确实正确传递。再次感谢你的帮助!!如果我是你,我会这样做:
value=“#{viewRecordBean.currentRecord(listedRecord.id)?listedRecord.candidate:messages['table.header.record.archived']}”
。如果我是你,我会这样做:
value=“#{viewRecordBean.currentRecord(listedRecord.id)?listedRecord.candidate:messages['table.header.record.archived']}
。不是两行,而是只有一行,并且只检查一次条件。