You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@struts.apache.org by "James Holmes (JIRA)" <ji...@apache.org> on 2007/08/15 15:50:34 UTC

[jira] Updated: (WW-2112) @ConversionErrorFieldValidator and Collections not working

     [ https://issues.apache.org/struts/browse/WW-2112?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

James Holmes updated WW-2112:
-----------------------------

    Fix Version/s: 2.0.11

> @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
>             Fix For: 2.0.11
>
>
> @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.