0

我在 WAS 5(Websphere Application Server 5)中使用 JSF 1.1,我需要知道我的 HtmlDataTable 中的哪个列被点击了,我尝试了很多方法但我无法获得成功的结果,我唯一需要的是将参数传递给动作。

我有类似的东西

<h:form>
<h:datatable value=#{bean.list} var="row">
       <h:column>
            <f:facet name="header">
                        <h:outputText value=""/>
                    </f:facet>  
            <h:commandButton value="Test!" action="#{bean.saludar}">
                  <f:param name="cod" value="#1"/>
            </h:commandButton>
       </h:column>
</h:datatable>
</h:form>

在我的 BackingBean 我有

public class Bean {
       ......
       ......
     public String saludar() {

           FacesContext context = FacesContext.getCurrentInstance();
           Object value = context.getExternalContext().getRequestMap().get("cod");
           //value IS NULL !!!!!!!!!!!!!!!!!!! HELP HERE OR BEFORE ....
     }

}

我尝试了很多方法,我不知道问题是否是因为我在 HtmlDataTable 或类似的东西中,我可以通过将 de 表绑定到一个 HtmlDataTable 并访问方法 table.getRowData(); 来知道选定的行;我有将近 3 天我找不到解决方案,我已经在 J​​SF 1.2 中使用 Glassfish 3.1 进行了测试并且它有效,但我不知道如何在 WAS 5 中使用 Java 1.4 进行测试

谢谢!

4

1 回答 1

3

在 JSF 1.x<f:param>中,命令按钮不支持 。此支持仅从 JSF 2.0 开始。

有几种方法可以实现您的具体要求(顺便说一句,知道单击的列的要求很奇怪,也许您说“列”时实际上是指“行”?)。

  1. 使用<h:commandLink>而不是<h:commandButton>. 它支持<f:param>.
  2. 使用<f:setPropertyActionListener>而不是<f:param>.
  3. 使用UIData#getRowData()orDataModel#getRowData()来获取当前行。
  4. 安装 JBoss EL 并像这样直接传递行本身action="#{bean.saludar(row)}"

也可以看看:

于 2012-10-26T14:21:13.850 回答