如何从p:dialog头属性引用javascript变量

时间:2011-08-24 18:08:57

标签: javascript variables xhtml primefaces

我在java脚本中有一个变量header_title

<script type="text/javascript">
var dialog_label; 

function update_dialog_label(arg){  
   dialog_label = arg;  
}</script>

现在,我想使用dialog_open

<p:dialog widgetVar="nodeDetail" width="520" header="{dialog_label}">

使用dialog_label设置标题的正确方法是什么?

感谢。

3 个答案:

答案 0 :(得分:4)

如果您更喜欢使用javascript var而不是bean属性:

jsf代码:

<p:dialog id="infoDialog" widgetVar="infoDialog" header="Local title" width="400">
    something
</p:dialog>

<input type="button" value="showDialog" onclick="showDialog()"></input>

代码A:

<script type="text/javascript">
var globalTitle = "Global title";

function showDialog(){  
    var header = $("#infoDialog".concat("_title"));
    header.text(globalTitle);
    infoDialog.show();
}
</script>

代码B:

<script type="text/javascript">
var globalTitle = "Global title";

function showDialog(){  
    var header = document.getElementById("infoDialog".concat("_title"));
    header.innerHTML = globalTitle;
    infoDialog.show();
}
</script>

并忽略原始标题...您可以更新globalTitle ...

答案 1 :(得分:0)

我不相信您可以将属性绑定到JavaScript中的变量,如您所示。但是,如果p:dialog元素与其他HTML元素类似,则每次更新对话框标签时,通过直接从JavaScript设置标题,您可以实现所需的目标。首先,给对话框一个ID:

<p:dialog id='dialog' widgetVar="nodeDetail" width="520" header="{dialog_label}">

现在,在您的函数update_dialog_label(arg)中,在最后添加以下行:

nodeDetail.header = dialog_label;

现在,每次调用更新函数时,都会更新对话框标题。希望有所帮助。

编辑:我不熟悉PrimeFaces,但是我用Google搜索了它,它可能会走上正确的道路: http://forum.primefaces.org/viewtopic.php?f=3&t=14538

答案 2 :(得分:0)

通过检查浏览器中生成的代码,我使用以下javascript成功修改了<p:dialog>的标题:

$('span#infoDialog_title.ui-dialog-title').html(globalTitle);

并显示对话框:

PF('infoDialog').show();

希望这有帮助!