【问题标题】:Pass variable from JSF javascript to Bean [duplicate]将变量从 JSF javascript 传递给 Bean [重复]
【发布时间】:2015-01-07 02:31:38
【问题描述】:

我一直在寻找答案,但没有找到...

我想将变量值从 javascript 传递到 bean。是否可以在不进入 xhtml 的情况下做到这一点?我想我只是愚蠢,但我还没有找到答案。有人可以给我一个真正的假人指南吗? :)

假设,我想将 javascript 变量 X 值发送给命名 Bean“用户”,并且在 bean 中我有一个字符串的 getter 和 setter。

请假向导。我只是似乎不明白这个......老狗和新把戏,你知道的:D

如果必须通过 XHTML 完成,我想使用 p:remotecommand。


编辑:引用:“这个问题在这里可能已经有了答案:”

也许是这样,但我还是不明白。我想我就是那么愚蠢...... :(

【问题讨论】:

  • 也许您可以定义不可见的输入字段并通过javascript填充所需的值,然后调用 p:remoteCommand 来处理和更新该字段。但是不要使用 render = false 使字段不可见,您将无法处理它。没试过,但觉得可能有用。

标签: javascript jsf


【解决方案1】:

Anatoly 是对的:Primefaces 的 <p:remoteCommand> 非常适合。

在您的 xhtml 页面中的任何位置声明 remoteCommand,例如:

<p:remoteCommand name="SetMyStrings" actionListener="#{myBean.setMyStrings}" />

您现在可以在 Javascript 中调用 remoteCommand,使用

SetMyStrings([{ name: "string1", value: "Hello"}, {name="string2", value: "World"}]);

(或 ofc。从您的 javascript 变量中获取字符串值,而不是对其进行硬编码)

最后,您需要在 backing bean 中做的所有事情就是收集来自 RequestParameter 映射的值:

public void setMyStrings(){
   Map<String, String> requestParamMap = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();

   String string1 = requestParamMap.get("string1"); //Hello
   String string2 = requestParamMap.get("string2"); //World
}

【讨论】:

  • 在我的 Bean 中,我必须使用 Map 吗?如果我只想设置一个字符串,我可以使用那个字符串 SETTER 吗?我该怎么做。我试过了,但它不起作用。
猜你喜欢
  • 2019-09-27
  • 2014-12-23
  • 2017-10-07
  • 2014-01-11
  • 2012-08-10
  • 2016-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多