【发布时间】:2015-03-11 07:19:42
【问题描述】:
这是我的动作类
public class DoctorsController extends ActionSupport implements ModelDriven<Doctor> {
private DoctorDao docDao = new DoctorDaoImpl();
private List<Doctor> listDoc = new ArrayList<Doctor>();
private Doctor doc = new Doctor();
public List<Doctor> getListDoc() {
return listDoc;
}
public void setListDoc(List<Doctor> listDoc) {
this.listDoc = listDoc;
}
public String excute() throws Exception {
return SUCCESS;
}
public String getDoctorView() {
return SUCCESS;
}
public Doctor getDoc() {
return doc;
}
public void setDoc(Doctor doc) {
this.doc = doc;
}
public String addDoctor() {
this.docDao.addDoctor(this.doc);
listDoc = docDao.listDoctor();
return SUCCESS;
}
@Override
public Doctor getModel() {
return doc;
}
public DoctorDao getDocDao() {
return docDao;
}
public void setDocDao(DoctorDao docDao) {
this.docDao = docDao;
}
}
这是我在数据库中保存医生的表单
<html>
<head>
</head>
<body>
<s:form action="saveDoctor" method="post">
<table>
<s:push value="doc">
<s:hidden name="id" />
<s:textfield name="firstName" label="First Name" />
<s:textfield name="lastName" label="Last Name" />
<s:textfield name="email" label="Email" />
<s:textfield name="fees" label="Fees" />
<s:select name="specialist" list="#@java.util.LinkedHashMap@{'Bone':'Bone','Heart':'Heart'}" />
<s:textfield name="chamber.city" label="City" />
<s:textfield name="chamber.zipCode" label="ZipCode" />
<s:textfield name="chamber.roadNum" label="Road Num" />
<s:textfield name="chamber.houseNum" label="House Num" />
<s:submit/>
</table>
</s:push>
</s:form>
</body>
</html>
这是我的 DoctorsController-validation.xml,用于验证医生的电子邮件
<validators>
<field name="doc.email">
<field-validator type="requiredstring">
<message>Email can't be blank</message>
</field-validator>
</field>
</validators>
现在验证工作正常,因为如果“电子邮件”字段为空,则操作将重定向到输入表单,但问题是我在输入表单中看不到任何验证消息。我应该看到类似“电子邮件不能空白",但我没看到。
【问题讨论】:
-
我假设您使用的是默认的 XHTML 主题...如果您删除
<s:push>并将doc.放在每个name="属性前面,它是否有效?请尝试 -
在删除
push并将doc.放在每个name前面后,也删除驱动模型。顺便说一句,您现在并没有真正使用模型驱动。
标签: java xml validation struts2