带有h:commandButton的动态消息内容的确认对话框

时间:2013-11-04 20:44:24

标签: javascript jsf

我正在尝试在JSF中为commandButton创建一个确认对话框。我想要显示的消息是"您确定要部署到#{deployBean.environmentName}吗?",其中#{deployBean.environmentName}指的是h:selectOneMenu的选定值。

我在' onClick'中使用了纯JavaScript。参数h:commandButton来做到这一点。 XHTML代码如下:

<h:commandButton id="deploy" 
value="Deploy" 
action="#{deployBean.deployButtonAction}" 
disabled="#{(!deployBean.checkDeploy and (deployBean.stageComplete or deployBean.stageRunning)) or (deployBean.stageStart)}" 
onclick="return confirm('Are you sure you want to deploy to #{deployBean.environmentName}?');" > 
    <f:ajax event="keyup" render="status output detail"/>
</h:commandButton>

但是环境名称不会显示在确认对话框中。

Output of the code

请告诉我我的代码中缺少的内容。或者,如果有更好的方法,请告诉我。

1 个答案:

答案 0 :(得分:1)

嗯,因为你提到的普通JavaScript 位,它不会起作用。 =) 你看,JavaScript对#{deployBean.environmentName}语法一无所知 - 在页面加载之前,这个EL表达式只在服务器中进行一次评估,就是它。

即使您在h:selectOneMenu尝试确保单击按钮时deployBean中的值设置为onclick时进行了AJAX更新,onclick="return confirm('Are you sure you want to deploy to ' + document.getElementsByClassName('environment-name')[0].value + '?');" 也只会在客户端进行评估侧。所以,你可以用简单的JavaScript&amp; DOM操作,可能是这样的:

h:selectOneMenu

并提供styleClass="environment-name" onclick="return confirm('Are you sure you want to deploy to ' + $('.environment-name').val() + '?');"

那应该做你想要的。

当然,如果你碰巧在你的应用程序中使用jQuery,你可以缩短它:

{{1}}