Условный рендеринг в зависимости от наличия сообщения о лицах

У меня есть специальная строка в моей таблице для ошибок:

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

Как я могу установить это так, чтобы строка отображалась только при наличии ошибки?


person DD.    schedule 01.07.2015    source источник
comment
Является ли это простой таблицей HTML, при этом она не является ни стандартным компонентом JSF (например, <h:dataTable>), ни компонентом PrimeFaces (например, <p:dataTable>)?   -  person Tiny    schedule 01.07.2015
comment
Если строки внутри таблицы являются статическими (таким образом, <tr> не завернуты внутрь <c:forEach> и/или <ui:repeat> итерирующих компонентов), то того же можно добиться, используя компонент, подобный <p:panelGrid>, и условный рендеринг <p:row rendered="#{someCriteria}" ...> внутри него.   -  person Tiny    schedule 01.07.2015
comment
Я мог бы использовать PanelGroup вокруг тега tr, но я не знаю, какое условие для его отображения.   -  person DD.    schedule 01.07.2015
comment
то есть, как я могу определить, отображает ли сообщение p: сообщение об ошибке или нет?   -  person DD.    schedule 01.07.2015
comment
Я когда-либо делал что-то подобное, как указано в этом ответе.   -  person Tiny    schedule 01.07.2015


Ответы (2)


Во-первых, я рекомендую не использовать таблицу для отображения элементов макета

после этого элемент появится, даже если сообщение отсутствует, если вы обязаны его использовать, вы можете использовать такой подход в JS:

 <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.

Но я скажу, что лучшее решение - не использовать таблицу.

Надеюсь, это помогло

person Amine BOUKABOUB    schedule 01.07.2015

Используйте компонент JSF и отображаемое свойство

rendered="#{not empty facesContext.messageList}"
person Jose Manuel Gomez Alvarez    schedule 21.05.2018