JSF – 在ajax调用上传递参数 – 这段代码有什么问题?
发布时间:2020-12-16 02:52:10 所属栏目:百科 来源:网络整理
导读:当我进行ajax调用时,我需要将参数传递给bean. 我的豆是这样的: @ManagedBean@RequestScopedpublic class Selector { @ManagedProperty(value="#{param.page}") private String page; @PostConstruct public void init() { if(page==null || page.trim().isE
当我进行ajax调用时,我需要将参数传递给bean.
我的豆是这样的: @ManagedBean @RequestScoped public class Selector { @ManagedProperty(value="#{param.page}") private String page; @PostConstruct public void init() { if(page==null || page.trim().isEmpty()) { this.page="homepage"; } System.out.println(this.page); } public String getPage() { return page; } public void setPage(String page) { this.page=page; } } 并且,当我执行ajax调用时,我需要(由于我想呈现不同的上下文的事实)页面参数.所以我做到了这一点: // in this moment selector.page = articles <h:inputHidden value="#{selector.page}" id="page" /> <h:commandLink> <f:setPropertyActionListener target="#{articlesSelector.order}" value="1" /> <f:ajax event="click" render=":articlesContent"/> <h:graphicImage value="img/arrow_up.png" alt="Arrow Up"/> </h:commandLink> 但是,在应用请求阶段,页面仍然是“主页”.它应该从请求中获取page-parameter,将其应用于Component树并呈现“articles”上下文.为什么不会发生? 干杯 解决方法
因为< h:inputHidden>的值仅在更新模型值阶段期间设置.这确实是一种在JSF中存在很长时间的不直观的行为.我曾经报道过一个关于这个的问题,但这个问题因“按设计”而被关闭.
有几种方法可以解决这个问题,其中包括视图范围.在您的特定情况下,您可以使用 <h:commandLink> <f:param name="page" value="#{selector.page}" /> <f:setPropertyActionListener target="#{articlesSelector.order}" value="1" /> <f:ajax event="click" render=":articlesContent"/> <h:graphicImage value="img/arrow_up.png" alt="Arrow Up"/> </h:commandLink> 然后它将作为请求参数#{param.page}提供,并在您的请求范围内的bean中设置为@ManagedProperty. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容