【问题标题】:how to use javascript to get jsf h:outputText value?如何使用 javascript 获取 jsf h:outputText 值?
【发布时间】:2012-04-19 18:38:09
【问题描述】:

我有一个按钮具有可以设置 myBackingBean.myString 的操作,并且 onclick 事件调用 js 方法来提醒该值。我只想通过使用 javascript 从 backing bean 中获取 myString 的值。

我有一个隐藏的输出,它具有来自支持 bean 的价值:

h:outputText id="myOutput" rendered="false" value="#{myBackingBean.myString}" 

然后我需要在由按钮触发的 javascript fxn 中提醒这个值:

function myFunction() {

var outPut= document.getElementById("myForm:myOutput").value;

...

}

但我收到了Object required 错误。我怎样才能解决这个问题? 提前致谢。

【问题讨论】:

    标签: javascript jsf-2 backing-beans


    【解决方案1】:

    确保 h:outputText 已渲染(rendered="false" 不能将其添加到 DOM。如果它不渲染,则无法访问它。如果您需要隐藏它,请使用 h: inputHidden 代替)。

    然后确保它将 HTML 标记呈现为或充当具有 id 属性为“myForm:myOutput”的容器。

    此外,.value javascript 访问器用于输入标签,因此请改用 inerHTML。

    【讨论】:

    • 感谢您的回复,但能否请您提供更多详细信息?我有一个按钮有可以设置 myBackingBean.myString 的动作,并且 onclick 事件调用这个 js 方法。我只想从支持 bean 中获取 myString 的值,所以我认为这个隐藏的输出可能会有所帮助。我将 ouputText 修改为 h:inputHidden id="hidden1" value="#{myBackingBean.myString}" 但得到同样的错误。我也将 .value 更改为 .innerHTML 不起作用
    • 你能检查生成的 HTML 吗?只是为了确保输入类型 hidden 存在并且具有所需的值?
    • 我检查元素并且我有这一行。你是这个意思吗?
    • 是的,这个document.getElementById("myForm:hidden1").value 应该可以工作(至少,不会产生 javascript 错误)。但是该输入 hidden 有一个空值,因此,请确保 #{myBackingBean.myString} 绑定正确并且正在更改输入隐藏值。
    • 谢谢,它有效。但现在我还有一个问题。我的按钮触发了这个 js 并且还从支持 bean 调用了一个方法。支持 bean 设置此隐藏输入的值 (#{myBackingBean.myString}),但 jsf UI 在我单击按钮之前获取该值,因此第一次为空,第二次将是 bean 中设置的值。那么如何更新值?
    【解决方案2】:

    您不必总是有一个隐藏字段来访问 Bean 属性。您可以按以下方式进行。

    <h:commandButton value="Show" onclick="alert('#{myBackingBean.myString}');"/>
    

    但是,如果您想在单击按钮时更改 'myString' 的值,然后要显示新值,则应使用 &lt;a4j:commandButton/&gt; 并且它是 onComplete 属性如下。

    <a4j:commandButton value="Change" action="#{myBackingBean.changeString()}" oncomplete="alert('#{myBackingBean.myString}');" />
    

    【讨论】:

    • 谢谢。我尝试了第二个,但即使重新渲染隐藏的输入,值也没有得到更新。现在似乎不可能更新客户端值。是否可以使用警报来显示面部信息?我有 context.addMessage(FacesMessage.FACES_MESSAGES, message);在我的 backing bean 中,那么我该如何使用 js 来提醒这个 msg?
    猜你喜欢
    • 2013-02-15
    • 2014-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-06
    • 2012-05-05
    • 2011-06-02
    • 1970-01-01
    相关资源
    最近更新 更多