我必须在JSF中为<p:dialog>设置头.我已经写入了setHeaderName(),用于名称getter和setter.But我看不到<p:dialog>标题的名称如何动态更改p的头部:PrimeFaces中的对话框.
正如之前mareckmareck所提到的,您可以通过对组件使用简单的ajax更新来实现.
另外,我建议使用标头事实而不是标头属性,如:
<p:dialog id="someDialog" widgetVar="someDialog_var">
<f:facet name="header">
<h:outputText id="someDialogHeader" value="#{backingBean.dialogHeader}"/>
</f:facet>
...
</p:dialog>
Run Code Online (Sandbox Code Playgroud)
和匹配
<p:commandButton value="Change dialog header"
actionListener="#{someBackingBean.changeHeader}"
update="someDialogHeader"/>
Run Code Online (Sandbox Code Playgroud)
(我复制并扩展了这个例子,顺便提一下mareckmareck ...)
这是一个更好的解决方案,因为现在您只能更新标题文本,而不是整个Dialog.(因为更新整个Dialog也会使用这种方法.)
此外,您可能已经注意到,一旦更新整个对话框,您的对话框将关闭.这种方法也摆脱了这个问题.
最好的祝福,
J.Adam
这在很大程度上取决于实现,但通常您可以这样做:
<p:dialog id="someDialog" header="#{backingBean.dialogHeader}">
(...)
</p:dialog>
Run Code Online (Sandbox Code Playgroud)
然后在支持 bean 中更改字段 dialogHeader 的值(通过 ajax 或任何其他方式)。请记住,您需要一个 setter 和 getter 才能使其工作。
@ViewScoped
@ManagedBean
public class SomeBackingBean {
private String dialogHeader;
public void setDialogHeader(final String dialogHeader) {
this.dialogHeader = dialogHeader;
}
public String getDialogHeader() {
return dialogHeader;
}
public void changeHeader() {
setDialogHeader("SomeHeader");
}
}
Run Code Online (Sandbox Code Playgroud)
调用 changeHeader 方法和重新渲染对话框将更改标题。例如,它可以这样调用:
<p:commandButton value="Change dialog header"
actionListener="#{someBackingBean.changeHeader}"
update="someDialog"/>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
11763 次 |
最近记录: |