作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用的是 JSF2 和 PrimeFaces,每次我发出 Ajax 请求并检查当前的对话
是否是短暂的,如果不是,则开始新的对话。
当我禁用 Ajax 请求时,表单会自动传递 cid
并恢复对话,但是当它是 Ajax 请求时,cid
不会传递自动。
在 @ConversationScoped
中使用 Ajax 请求时,传递 cid
的正确方法是什么?为什么这个参数没有自动传递?
最佳答案
我不太清楚你的用例是什么;但理论上,您可以使用 <f:attribute/>
传递参数任何给定组件上的标记。
添加<f:attribute/>
标记到发起 AJAX 调用的组件
<p:commandLink id="aComponent" value="#{bean.val}" action="#{bean.doSomething}">
<f:attribute name="conversationId" value="#{param['cid']}"/>
</p:commandLink>
您可以从支持 bean 中的组件参数映射中提取参数:
FacesContext context = FacesContext.getCurrentInstance();
UIViewRoot theView = context.getViewRoot();
UIComponent component = theView.findComponent("aComponent");
Integer theConversationId =(Integer) component.getAttributes().get("cid");
这里的关键点是参数在 #{param}
中可用。 map (与任何其他 GET
参数一样)。之所以不能通过ajax自动传输是因为:GET参数需要传输完整的HTTP请求。 AJAX 的全部意义在于您可以选择发送到服务器的内容。
关于ajax - 如何将 @ConversationScoped 与 Ajax 请求一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16219067/
我是一名优秀的程序员,十分优秀!