showcase - Cómo agregar un mensaje a un componente específico desde el bean de respaldo JSF
primefaces showcase (2)
Debe proporcionar el llamado client id
, que encontrará en UIComponent
.
El siguiente es un ejemplo rápido de cómo usar esto.
Considere el siguiente frijol:
@ManagedBean
@RequestScoped
public class ComponentMsgBean {
private UIComponent component;
public UIComponent getComponent() {
return component;
}
public void setComponent(UIComponent component) {
this.component = component;
}
public String doAction() {
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage(component.getClientId(), new FacesMessage("Test msg"));
return "";
}
}
siendo utilizado en el siguiente Facelet:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
>
<h:body>
<h:form>
<h:outputText id="test" value="test component" binding="#{componentMsgBean.component}"/>
<h:message for="test"/>
<h:commandButton value="click me" action="#{componentMsgBean.doAction}" />
</h:form>
</h:body>
</html>
Esto agregará un mensaje de Caras con contenido "Test msg" para el componente outputText utilizado en el ejemplo.
Tengo un mensaje h: inputText y un mensaje h: conectado:
<h:inputText id="myText" value="#{myController.myText}" />
<a4j:outputPanel>
<h:message for="myText" .../>
</a4j:outputPanel>
Quiero enviarle un mensaje desde java, de la siguiente manera:
FacesContext.getCurrentInstance().addMessage(arg0, arg1);
que se envía a h: messages, pero a un ID específico en una forma específica. ¿Cómo puedo hacer esto? (Sin implementar el bean de validación o el método de validación, es decir, sin lanzar la excepción de validación).
Otra forma de hacerlo es: asigne un ID al formulario, como "form1", luego, cuando agregue el mensaje, el ID de cliente es "form1: prueba".