【问题标题】:primefaces p:message outside the components formprimefaces p:组件形式外的消息
【发布时间】:2012-04-20 12:48:12
【问题描述】:

我正在使用 JSF 2.0 和 Primefaces 3.2。

我正在使用 Facelets 进行模板化,并且我已经构建了一个 3 列布局:

左栏 - mainContent 栏 - 右栏。每列都有自己的模板 xhtml 文件,其中包含我在 mainTemplate 中插入的 ui:composition。

在 mainContent 列中,我有一个信息按钮 (p:commandButton):

<h:form id="mainForm">
<p:commandButton id="infoButton" value="Info" actionListener="#{faceletsAttachment.addInfo}"/> 
</h:form>

但我希望信息显示在右栏中,并带有

<h:form id="rightColumnForm">
<p:message for="infoButton">
</h:form>

这显然是行不通的,因为没有找到infoButton。知道我怎样才能完成这项工作吗?我试过了

<p:message for="mainForm:infoButton"> 

也是,但没有雪茄。

我想使用 p:message 的原因是我希望消息将自身定位在 infoButton 的 y 位置上。如果您有其他解决方案来解决我如何做到这一点,我也将不胜感激。

【问题讨论】:

    标签: java jsf primefaces facelets


    【解决方案1】:

    如果您从服务器端手动添加消息,您可以执行以下操作

    &lt;p:message id="myInfoButton" for="myInfoButton" /&gt;

    并像这样从服务器向myInfoButton发送消息

    FacesContext.getCurrentInstance.addMessage("myInfoButton ", new FacesMessage("My Message", "Some Text goes here..."));
    

    还添加:rightColumnForm id 以更新&lt;p:commandButton id="infoButton"

    【讨论】:

    • 嗨,谢谢你的回答,但我没有让这个工作:在我的 backingbean 中: public void addInfo(ActionEvent actionEvent) { FacesContext.getCurrentInstance().addMessage("myInfoButton", new FacesMessage("My Message", "Some Text goes here..."));以及我的表单中的 。当我按下命令按钮时没有出现任何消​​息。另外我不确定这将如何将消息对齐到正确的 y 位置?
    • 已编辑,您需要更新 rightColumnForm 表单以便重新渲染视图...
    • 是的,这让我更近了一步,但重要的是消息显示在与命令按钮相同的 y 位置..
    • 好吧,y 位置更像是一个设计问题......我认为它被渲染为 span 元素(h:message),所以你可以“玩”css,也许是绝对位置......打开您的浏览器开发工具(chrome F12 很棒)并开始对齐元素...(看起来您的问题的逻辑部分已经解决...)
    • 这需要是通用的,因为逻辑将在应用程序中的多个地方重用,并且信息按钮不会有相同的 y 位置。我想我将不得不改用javascript。但足够接近。感谢您的帮助!
    猜你喜欢
    • 2013-12-27
    • 1970-01-01
    • 2012-09-19
    • 2013-11-20
    • 1970-01-01
    • 2017-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多