@ConversionErrorFieldValidator and Collections not working
----------------------------------------------------------
Key: WW-2112
URL: https://issues.apache.org/struts/browse/WW-2112
Project: Struts 2
Issue Type: Bug
Components: Interceptors
Affects Versions: 2.0.9
Environment: WebSphere 6.1.0.9 on Windows
Reporter: Martin Petzsch
@ConversionErrorFieldValidator does not work with property inside bean in
collection. Validation in the same location does work.
A data bean which a jsp uses through an action. This bean contains a date
field. I annotate the set method with:
@ConversionErrorFieldValidator(message="aDate: Conversion Error")
@RequiredFieldValidator(message="aDate: Required Field")
public void setADate(Date date) {
aDate = date;
}
This works fine and I get the messages about type conversion and validation
failure in the expected order depending on my input.
The same data bean also contains a List of another data bean and the associated
methods:
private List<InnerBean> innerList;
@VisitorFieldValidator(message="Inner Message:",appendPrefix=true)
public List<InnerBean> getInnerList() {
if (innerList == null) {
innerList = new ArrayList<InnerBean>();
innerList.add(new InnerBean());
}
return innerList;
}
public void setInnerList(List<InnerBean> innerList) {
this.innerList = innerList;
}
My inner bean is as follows:
private Date innerProp;
public Date getInnerProp(){
return innerProp;
}
@ConversionErrorFieldValidator(message="innerProp: Conversion Error")
@RequiredFieldValidator(message="innerProp: Required Field")
public void setInnerProp(Date str){
innerProp = str;
}
The required field validator works as expected. I do not however get any
result EVER back from the ConversionErrorFieldValidator on the inner bean. If
I enter an incorrect value it simply does not get set.
Source Code Follows
===============================================
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import
com.opensymphony.xwork2.validator.annotations.ConversionErrorFieldValidator;
import com.opensymphony.xwork2.validator.annotations.RequiredFieldValidator;
import com.opensymphony.xwork2.validator.annotations.VisitorFieldValidator;
public class MyDataBean {
private Date aDate;
private List<InnerBean> innerList;
public MyDataBean() {
}
@VisitorFieldValidator(message="Inner Message",appendPrefix=false)
public List<InnerBean> getInnerList() {
if (innerList == null) {
innerList = new ArrayList<InnerBean>();
innerList.add(new InnerBean());
}
return innerList;
}
public void setInnerList(List<InnerBean> innerList) {
this.innerList = innerList;
}
public Date getADate() {
return aDate;
}
// this works fine
@ConversionErrorFieldValidator(message="aDate: Conversion Error")
@RequiredFieldValidator(message="aDate: Required Field")
public void setADate(Date date) {
aDate = date;
}
}
--------
/**
*
*/
import java.util.Date;
import
com.opensymphony.xwork2.validator.annotations.ConversionErrorFieldValidator;
import com.opensymphony.xwork2.validator.annotations.RequiredFieldValidator;
/**
* @author MPETZSCH
*
*/
public class InnerBean {
private Date innerProp;
public Date getInnerProp(){
return innerProp;
}
// this does not work
@ConversionErrorFieldValidator(message="innerProp: Conversion Error")
@RequiredFieldValidator(message="innerProp: Required Field")
public void setInnerProp(Date str){
innerProp = str;
}
}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.