jsf - <h :commandLink> not working inside a <h:dataTable>

标签 jsf ajax4jsf

我会尝试解释一下自己:

我正在使用 java、JSF 2.0 和 RichFaces 4.2.1 开发一个 JSF 项目。

当我访问 jsf 时,它只加载一个搜索过滤器和一个 commandLink。 commandLink 将在我的 backingBean 中启动一个方法来加载数据,并将其显示在数据表中。

<h:commandLink id="btnRecords">
    <f:ajax render="myCompAjax" event="click" listener="#{myBean.loadRecords}" />
    <h:graphicImage value="img/ico_new.gif" alt="#{bundle['button.search']}" />
</h:commandLink>

数据表一开始是不可见的,但是一旦您单击 commandLink,backingBean 中的标志就会发生变化,并且表格将显示我刚刚加载的数据。

<a4j:outputPanel ajaxRendered="true" id="myCompAjax">
    <h:dataTable id="recordsTable" value="#{myBean.records}"                   
     var="item" rendered="#{myBean.flagShowTable}">
        <h:column headerClass="thPijama" >
            <f:facet name="header">
                <table><tr class="thPijama"><td></td></tr></table>
            </f:facet>
            <h:commandLink action="#{myBean.goNextPage}">
                <h:outputText value="Go Next Page" />
                <h:inputHidden value="#{item}" />   
            </h:commandLink>                                                     
        </h:column>                   
    </h:dataTable>
</a4j:outputPanel>

问题是数据表内的 commandLink 操作根本不起作用。我只是想导航到另一个jsf。事实上,它所做的就是隐藏数据表并保持过滤器不变。操作方法仍然无法访问。

当然,如果我在数据表之外设置相同的commandLink,它就可以工作。

我无法使用 session 范围 Bean,因为我为之工作的人不批准它。

有人可以帮助我吗?

感谢您的提示。

最佳答案

I cannot use Session Scope Beans because the people I work for don't approve it.

您是否暗示将 bean 放置在 session 范围而不是请求范围中实际上解决了问题?如果是这样,那么只需将 bean 放入 View 范围中即可。

@ManagedBean
@ViewScoped
public class MyBean implements Serializable {
    // ...
}

这样,只要您通过 ajax 请求与同一 View 交互,bean 就会一直存在。该bean在同一 session 中的其他浏览器选项卡/窗口中共享(这确实是架构师在简单 View 中禁止使用它的主要原因)。

另请参阅:

关于jsf - <h :commandLink> not working inside a <h:dataTable>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13274412/

相关文章:

jsf-2 - 单 f :viewParam fails validation on postback (ajax) requests on a ViewScoped bean

richfaces - IE11在JSF重新呈现时更改DOM结构

jsf - 如何为 p :inputText? 自动完成 =“off”

jsf - 如何在 JSF 2.0/2.1 中用 CDI 替换 @ManagedBean/@ViewScope

jsf - 创建和下载 PDF 文件时出现空白页(iText 和 JSF)

javascript - 使用 p :tabMenu with JavaScript

javascript - 使用 JSF AJAX 方法保持 JavaScript 模块作用域

javascript - 调用另一个a4j :jsFunction in an a4j:jsFunction oncomplete event

javascript - RichFaces/Ajax4JSF : How to turn off JavaScript obfuscation?

java - jsf - 数据表中用于删除行的命令链接