使用JavaScript </p:commandbutton>更改<p:commandbutton>值

时间:2012-05-10 23:58:39

标签: javascript jsf jsf-2 primefaces

有没有办法用Javascript更改<p:commandButton>值?

我尝试在widgetVar中设置<p:commandButton>,但它没有任何setValue()功能或类似的内容。由于我的XHTML的其他特定问题,我无法将其绑定到托管bean。

2 个答案:

答案 0 :(得分:6)

JSF生成HTML。 JavaScript适用于HTML。在编写JavaScript代码时,如果您已经无法告诉表单最终会产生什么样的HTML代码,请不要过多地查看JSF源代码。

在您喜欢的浏览器中打开JSF页面,右键单击查看源。生成的<p:commandButton value="foo" />的HTML输出如下所示:

<button id="formId:buttonId" name="formId:buttonId" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" onclick="PrimeFaces.ab({formId:'formId',source:'formId:buttonId',process:'@all'});return false;" type="submit">
    <span class="ui-button-text">foo</span>
</button>

看,该按钮有一个<span>子项,其中包含值。

因此,将这个按钮值改为bar的JS应该这样做:

document.getElementById("formId:buttonId").firstChild.innerHTML = "bar";

答案 1 :(得分:0)

这是使用widgetVar的更好方法:

让我们说我们将ConfirmWgt设置为 widgetVar, 设置其值的javascript代码为:

PF('confirmWgt').jq.text("New Value");

使用这种方式,您可以确定将来Primefaces应用的html代码中的任何更改不会对版本更新造成任何问题。