我在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设置标题的正确方法是什么?
感谢。
答案 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();
希望这有帮助!