【问题标题】:Conditionally render depending on presence of a faces message根据面孔消息的存在有条件地呈现
【发布时间】:2015-09-18 19:35:59
【问题描述】:

我的表格中有一个特殊的行用于显示错误:

<tr>
    <td colspan="2"><p:message for="questionId" id="msgQuestion" /></td>
</tr>

我该如何设置,以便仅在出现错误时显示该行?

【问题讨论】:

  • 这是一个普通的 HTML 表格吗,因此,它既不是标准的 JSF 组件(如 &lt;h:dataTable&gt;)也不是 PrimeFaces 组件(如 &lt;p:dataTable&gt;)?
  • 如果表中的行是静态的(因此,&lt;tr&gt; 没有包裹在 &lt;c:forEach&gt; 和/或 &lt;ui:repeat&gt; 迭代组件中),那么可以使用像 @987654328 这样的组件来实现相同的目的@ 并在其中有条件地渲染 &lt;p:row rendered="#{someCriteria}" ...&gt;
  • 我可以在 tr 标签周围使用 panelGroup 但我不知道渲染它的条件。
  • 即如何判断 p:message 是否显示错误?
  • 我曾经做过类似this answer所说的事情。

标签: jsf primefaces message jsf-2.2 conditional-rendering


【解决方案1】:

使用 JSF 组件并渲染属性

rendered="#{not empty facesContext.messageList}"

【讨论】:

    【解决方案2】:

    首先我会推荐not to use table to display layout elements

    之后,即使消息不存在,元素也会出现,如果你必须使用它,你可以在 JS 中使用 som think like this:

     <script type="text/javascript">
        window.onload = function() {
      hideTdMessage();
    };
    hideTdMessage(){
    var message = document.getElementById(msgQuestion);
    if(message){
       //the msg is present
    }else{
       //the msg is not present 
    }}
    </script>
    

    或者你可以使用你的 MBean 来改变 CSS 类,它比使用 JS 更好。

    但我会说最好的解决方案是不要使用表格。

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2016-12-13
      • 2020-02-09
      • 2023-02-21
      • 2021-02-08
      • 1970-01-01
      • 2021-06-04
      • 1970-01-01
      • 1970-01-01
      • 2019-09-05
      相关资源
      最近更新 更多