demys
Outubro 23, 2007, 1:11pm
#1
Como faço para gerar uma mensagem de erro especifica para um componente via codigo no ManagedBean ?
No HTML:
<t:inputSecret id=“senha” value="#{OperadorMB.operador.senha}" size=“8” maxlength=“8” styleClass=“textField” required=“true” />
<t:message for=“senha” styleClass=“msgError”/>
No ManagedBean:
// Algum codigo de validação…
FacesMessage fm = new FacesMessage(“Senha inválida!”);
FacesContext.getCurrentInstance().addMessage(“senha”, fm);
Gostaria que alem da mensagem gerada pelo jsf de campo requerido, eu tambem pudesse imprimir uma outra mensagem de erro que seja gerada via codigo em um segundo estagio de validação e que seja colocada ao lado do componente.
Ola Demys
Você pode usar o proprio método addMessage do FacesContext, porém com mais parametros que você usou.
addMessage(field_id, new FacesMessage(FacesMessage.SEVERITY_ERROR, error message, error message));
Espero ter ajudado
vc deve fazer isso num validator,algo do tipo:
public class MyValidator implements Validator {
public void validate(FacesContext facesContext, UIComponent uIComponent, Object object) throws ValidatorException {
String objeto = (String)object
if(1!=1){
((UIInput)uIComponent).setValid(false);
FacesMessage message = new FacesMessage("Error message. ");
facesContext.addMessage(uIComponent.getClientId(facesContext),message);
}
}
}
declare o validator no faces-config e referencie na propriedade que quer usar.
demys
Outubro 23, 2007, 1:27pm
#4
No exemplo acima o field_id seria “senha” ?
demys
Outubro 23, 2007, 2:19pm
#5
Como faço para obter o field_id dentro do ManagedBean ?
field_id = propriedade ID do componente
exemplo:
h:inputText id="username" value="#{login.username}" />
o id = username
demys
Outubro 23, 2007, 2:42pm
#7
Tentei assim:
e gostaria de capturar assim:
mas so consigo capturar com:
mabiel
Maio 2, 2009, 12:13pm
#8
[quote=demys]Tentei assim:
e gostaria de capturar assim:
mas so consigo capturar com:
Tenho esse mesmo problema…
Ninguem conhece nenhuma forma de recuperar algo do tipo:
#{facesContext.messages.???}
Obrigado.
demys
Maio 4, 2009, 1:27pm
#9
use a propriedade forceId=“true” para que force o JSF a usar exatamente o nome que vc esta definindo no id.
por exemplo:
h:inputText id="username" forceId="true" value="#{login.username}" />
No seu caso você coloca o id do seu form:forDoComponenteDeMSG ;D;
No seu caso você coloca o id do seu form:forDoComponenteDeMSG ;D;