这是我的 Bean 的片段:
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";
}
}
这是验证器 bean:
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
并且它是应用程序所需要的。
我应该如何解决问题?或者另一个问题,我是否应该尝试解决它?