Вы можете расширить PrimeFaces '1001 * для этого. Просто переопределите метод encodeEnd()
, в котором вы устанавливаете атрибут по умолчанию перед вызовом супер-метода.
Вот самодостаточный стартовый пример:
package com.example;
import java.io.IOException;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import org.primefaces.component.message.MessageRenderer;
public class CustomMessageRenderer extends MessageRenderer {
@Override
public void encodeEnd(FacesContext facesContext, UIComponent component) throws IOException {
component.getAttributes().put("display", "text"); // You might want to check first if it isn't already set.
super.encodeEnd(facesContext, component);
}
}
, который необходимо зарегистрировать в faces-config.xml
следующим образом (нет, магия аннотаций не будет работать при переопределении существующих средств визуализации, которые сами по себе зарегистрированы в XML, поэтому XML абсолютно необходим):
* * 1010
Но проще было бы просто добавить немного CSS, чтобы скрыть значок.
.ui-message-error-icon {
display: none;
}
Создание составного компонента, как следует из другого ответа, не совсем тривиально, поскольку цель for
для <p:message>
не содержится в том же составном.