我這裏有一個問題:定製驗證類工作不
情景: 我有一個JSF-2,春季(豆線)的應用。我寫了一個自定義驗證器,我想執行它。
@FacesValidator("com.test.vali")
@Named("com.test.vali")
public class TestValidator implements Validator {
@Override
public void validate(FacesContext arg0, UIComponent arg1, Object arg2) throws ValidatorException {
System.out.println("dhkdfkbhdfbkdfksdfdfk");
}
}
我嘗試使用以下方式來注入驗證:
路#1:
<h:inputText value="#{helloWorld.name}">
<f:validator binding="#{com.test.vali}" />
</h:inputText>
輸出
當試圖呈現的頁面,它拋出了一個例外。
javax.servlet.ServletException: /testRichFaces.xhtml @17,48 <f:validator> A validator id was not specified. Typically the validator id is set in the constructor ValidateHandler(ValidatorConfig)
搜查這個有很多,並驗證像幾個方面:
- 的Java文件是在一個包。
路#2
<f:validator validatorId="com.test.vali" />
輸出
javax.servlet.ServletException: Expression Error: Named Object: com.test.vali not found.
從路#1
所以和方式#2,我能理解,沒有任何註解的是爲我工作。
然後,我想移動到最後的辦法:
路#3:在faces-config.xml中添加驗證,只是爲了證明我使用2.0標準:
<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
version="2.0">
和校驗配置爲:
<validator>
<validator-id>com.test.vali</validator-id>
<validator-class>teet.TestValidator</validator-class>
</validator>
輸出
Works
現在問題出現了,即使使用JSF-2.0,我也不得不求助於faces-config.xml。
我在做什麼錯誤?
讓我們知道是否需要更多配置。
@Named註釋不是必需的。你如何管理你的後臺bean。如果它們使用Spring批註註釋,則必須在faces-config.xml中配置org.springframework.web.jsf.el.SpringBeanFacesELResolver。 – Ravi 2013-04-25 13:19:05
另請參閱http://stackoverflow.com/questions/12470512/scoperequest-not-working – Ravi 2013-04-25 13:20:20