這是我的豆的片段:用自定義的方法JSF驗證
public class WaiterBean extends Connector
{
private String PIN;
private String name = null;
public void setPIN(String PIN)
{
this.PIN = PIN;
}
public String getPIN()
{
return PIN;
}
public String getName()
{
return name;
}
public String isPINCorrect(String PIN)
{
try
{
resultSet = statement.executeQuery(
"SELECT name FROM dbo.waiters WHERE PIN=" + PIN);
while(resultSet.next())
{
name = resultSet.getString("name");
}
}
catch (SQLException se)
{
System.out.println(se.getMessage() + "**"
+ se.getSQLState() + "**" + se.getErrorCode());
}
if(name == null)
return "invalid";
else
return "valid";
}
}
這是驗證豆:
public class PINValidator implements Validator
{
@Override
public void validate(FacesContext fc, UIComponent uic, Object o) throws ValidatorException
{
String PIN = o.toString();
if(PIN.length() < 4)
{
FacesMessage msg = new FacesMessage("PIN too short");
msg.setSeverity(FacesMessage.SEVERITY_ERROR);
throw new ValidatorException(msg);
}
}
}
這是我如何使用它:
<h:form>
<h:panelGrid columns="2">
ENTER PIN
<h:inputText id="PIN" maxlength="4" size="4" value="#{waiterBean.PIN}">
<f:validator validatorId="com.jsf.PINValidator" />
</h:inputText>
</h:panelGrid>
<h:message for="PIN"/>
<br />
<h:commandButton value="SEND" action="#{waiterBean.isPINCorrect(waiterBean.PIN)}" />
<br />
</h:form>
一切工作正常,但我認爲在驗證程序類中包含isPINCorrect
方法是很好的做法(我錯了嗎?)。我可以在驗證器中實現該方法,但是我有一個問題,如何爲該應用程序需要WaiterBean
的setName。
我該如何解決問題?還是另一個問題,我是否應該嘗試解決它?
WaiterBean的範圍是什麼? – 2013-05-10 21:33:33
它的SessionScope – 2013-05-10 21:35:01