我有一个与页面关联的bucking bean,我想根据验证失败还是成功来更改其值。
@ManagedBean(name = "testBean")
@ViewScoped()
public class TestBean implements Serializable {
String value="";
int number;
/*getters-setters*/
}
验证号码是否为正的验证者
@FacesValidator("Validator")
public class NumValidator implements Validator{
@Override
public void validate(FacesContext context, UIComponent component,
Object value) throws ValidatorException {
int num=(Integer)value;
if(num<0){
FacesMessage msg =
new FacesMessage(The number is negative");
msg.setSeverity(FacesMessage.SEVERITY_ERROR);
throw new ValidatorException(msg);
}
}
}
和xhmtl页面:
<h:form>
<h:inputText id="number" value="#{testBean.number}" required="true"
requiredMessage="Is">
<f:validator validatorId="Validator" />
<f:ajax event="blur" render="msg" />
</h:inputText>
<h:message id="msg" for="number"/>
</h:form>
我希望bean中的String为value =&#34; negative&#34;或价值=&#34;积极&#34;是否偶然。怎么办呢?
答案 0 :(得分:0)
您的具体功能要求似乎归结为:
如果
<h:inputText>
出现验证错误,我该如何更改它?
在这种情况下,只需检查EL中的UIInput#isValid()
即可。当前的UI组件仅由implicit EL object #{component}
提供。
<h:inputText ... styleClass="#{component.valid ? 'positive' : 'negative'}">
<f:ajax ... render="@this msg" />
</h:inputText>
请注意,我已将@this
添加到render
,否则组件本身将不会更新。
您不应该使用特定于视图的属性(例如CSS类)来污染模型。你应该尽可能地让它们保持在视图方面。这将最终成为更“自然”的解决方案。