我在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 !!
答案 0 :(得分:2)
在JSF 1.x中,命令按钮不支持<f:param>
。这种支持仅适用于JSF 2.0。
有几种方法可以达到你的具体要求(顺便说一下,知道点击列的要求很奇怪,或许当你说“列”时你实际上意味着“排”?)。
<h:commandLink>
代替<h:commandButton>
。它支持<f:param>
。<f:setPropertyActionListener>
代替<f:param>
。UIData#getRowData()
或DataModel#getRowData()
代替获取当前行。action="#{bean.saludar(row)}"
。