JSF 1.1 f:param不在WAS 5中工作

时间:2012-10-25 04:44:57

标签: java jsf websphere rad

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

我有类似

的东西
<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 table绑定到一个HtmlDataTable并访问方法table.getRowData来了解所选的Row ();我有将近3天而且我找不到解决方案,我已经在使用Glassfish 3.1进行了JSF 1.2测试并且它有效,但我不知道如何使用Java 1.4在WAS 5中完成工作

Thnkxx !!

1 个答案:

答案 0 :(得分:2)

在JSF 1.x中,命令按钮不支持<f:param>。这种支持仅适用于JSF 2.0。

有几种方法可以达到你的具体要求(顺便说一下,知道点击列的要求很奇怪,或许当你说“列”时你实际上意味着“排”?)。

  1. 使用<h:commandLink>代替<h:commandButton>。它支持<f:param>
  2. 使用<f:setPropertyActionListener>代替<f:param>
  3. 使用UIData#getRowData()DataModel#getRowData()代替获取当前行。
  4. 安装JBoss EL并直接传递行本身,如action="#{bean.saludar(row)}"
  5. 另见: