Предварительно заполнить элемент формы ошибкой struts2 с проверкой
У меня есть форма с несколькими текстовыми полями. Значения текстового поля инициализируются значениями по умолчанию, используя customerSer
действие.
Я могу изменить значения по умолчанию и отправить форму, используя customer
действие. Оба действия принадлежат одному и тому же классу с разными методами, используемыми для каждого действия.
Это прекрасно работает, пока у меня нет проверки формы. После проверки формы первое действие не работает, выдает ошибку и ищет тип результата. input
,
Мне нужно сделать Struts2 проверки для элементов формы. Есть ли какие-либо другие подходы для заполнения формы данных или проверки?
Struts.xml
<action name="customerSer"
class="net.test.struts2.action.TestAction" method="initialize">
<result name="none">Customer.jsp</result>
</action>
<action name="customer"
class="net.test.struts2.action.TestAction">
<result name="success">SuccessCustomer.jsp</result>
<result name="input">Customer.jsp</result>
</action>
TestAction.java
package net.viralpatel.struts2.action;
import com.opensymphony.xwork2.ActionSupport;
public class TestAction extends ActionSupport {
/**
*
*/
private static final long serialVersionUID = 7154564763591606533L;
private String name;
private Integer age;
private String email;
private String telephone;
public String execute() {
return SUCCESS;
}
public String initialize() {
System.out.println("Aditya");
this.name="Aditya";
this.age=28;
return NONE;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getTelephone() {
return telephone;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
}
}
TestAction-validation.xml
<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.3//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
<validators>
<field name="name">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message key="errors.required" />
</field-validator>
</field>
<field name="age">
<field-validator type="required">
<message key="errors.required" />
</field-validator>
<field-validator type="int">
<param name="min">1</param>
<param name="max">100</param>
<message key="errors.range"/>
</field-validator>
</field>
<field name="email">
<field-validator type="requiredstring">
<message key="errors.required" />
</field-validator>
<field-validator type="email">
<message key="errors.invalid" />
</field-validator>
</field>
<field name="telephone">
<field-validator type="requiredstring">
<message key="errors.required" />
</field-validator>
</field>
</validators>
Customer.jsp
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>Customer Form - Struts2 Demo | ViralPatel.net</title>
</head>
<body>
<h2>Customer Form</h2>
<s:form action="customer.html" method="post" validate="true">
<s:textfield name="name" key="name" size="20" />
<s:textfield name="age" key="age" size="20" />
<s:textfield name="email" key="email" size="20" />
<s:textfield name="telephone" key="telephone" size="20" />
<s:submit key="label.add.customer" align="center" />
</s:form>
</body>
</html>
Ссылка на предварительно заполненные данные customer.jsp
<body>
<h2>Howdy, <s:property value="username" />...!</h2>
<s:a href="customerSer.html">Add Customer</s:a>
</body>
2 ответа
Когда ваш проверочный XML-файл назван так TestAction-validation.xml
это означает, что процесс проверки будет происходить для всех действий в TestAction
учебный класс. Таким образом, ваша проверка настроена для каждого класса действий, чтобы настроить его для каждого имени действия, как указано в struts.xml
файл, который вы должны назвать свой файл проверки так TestAction-customer-validation.xml
,
Вы также можете использовать аннотацию @SkipValidation для метода, который вам не нужен, для проверки правильности.
class MyAction extends ActionSupport{
@SkipValidation
public String view(){ //validation will NOT be applied here
...
}
public String save(){ //validation will be applied here
...
}
}