gpt4 book ai didi

ajax - 如何将 @ConversationScoped 与 Ajax 请求一起使用?

转载 作者:行者123 更新时间:2023-12-05 00:48:44 24 4
gpt4 key购买 nike

我使用的是 JSF2 和 PrimeFaces,每次我发出 Ajax 请求并检查当前的对话 是否是短暂的,如果不是,则开始新的对话。

当我禁用 Ajax 请求时,表单会自动传递 cid 并恢复对话,但是当它是 Ajax 请求时,cid 不会传递自动。

@ConversationScoped 中使用 Ajax 请求时,传递 cid 的正确方法是什么?为什么这个参数没有自动传递?

最佳答案

我不太清楚你的用例是什么;但理论上,您可以使用 <f:attribute/> 传递参数任何给定组件上的标记。

  1. 添加<f:attribute/>标记到发起 AJAX 调用的组件

    <p:commandLink id="aComponent" value="#{bean.val}" action="#{bean.doSomething}">
    <f:attribute name="conversationId" value="#{param['cid']}"/>
    </p:commandLink>
  2. 您可以从支持 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com