我正在學習JSF 2.2,並且找到一個很好的答案,我可以理解如何在GET參數上進行驗證。驗證f:viewParam值是一組選定的允許值之一
我有,有一個像這樣一個鏈接文件source.xhtml:
<h:link value="ALTER" outcome="/main/showSqlTemplates.xhtml">
<f:param name="type" value="ALTER" />
</h:link>
,並在我的destination.xhtml我有代碼看起來像這樣:
<f:metadata>
<f:viewParam id="type" name="type" value="#{showSqlTemplateManagedBean.type}" required="true" requiredMessage="Invalid page access. Please use a link from the menu."/>
</f:metadata>
<h:message for="type" class="bold"></h:message>
<br/>TYPE is : #{showSqlTemplateManagedBean.type}
和我的豆類看起來像這樣:
@ManagedBean
@RequestScoped
public class ShowSqlTemplateManagedBean {
String type = "";
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public ShowSqlTemplateManagedBean() {
}
}
正如你所看到的,我已經使用了「required」屬性來確保類型參數i至少在那裏,一切工作都很好。但我想做更多的驗證。
具體而言,我想確保字符串類型的值只能是ALTER,INSERT,UPDATE或DELETE。
這是自定義驗證程序進來的地方嗎?自定義驗證器似乎已經過了殺死這樣一個簡單的驗證檢查。我相信我錯過了一些東西。也許把一些東西放在PostConstruct的init()方法中?