Interestingly if I change the config for testingForm to be of scope session, 
then it works. However I can't use session scope so still need the answer for 
my original question, can some one help? Thanks.
  
Carl Smith <[EMAIL PROTECTED]> wrote:
    I have a jsp containing three text fields which are indexed property, I 
needs to validate all the text box contains a value other than null or empth 
string. When I click on save I got the error (see the bottom). Your helps are 
highly appreciated!
   
  jsp:
  <html:errors/>
<html:form action="/testingSaveAction" method="post">
 
 (1) indexed property - text box
 <br />
 <logic:iterate name="testingForm" property="listOfItems" id="labelValue">
 Fields to be validated: <html:text name="labelValue" property="value" 
indexed="true"/><br />
 </logic:iterate> 
 <br /><br />
   <html:submit property="submit">save</html:submit>
  </html:form>  
   
  ActionForm:
public class TestingForm extends ValidatorActionForm {
     
 private LabelValueBean[] listOfItems;
 private LabelValueBean labelValue=null;
 
 
 public LabelValueBean getLabelValue(int index) {
  return (LabelValueBean)listOfItems[index];
 }
 
 public void setLabelValue(LabelValueBean bean, int index) {
  listOfItems[index]= bean;
 }
   public LabelValueBean[] getListOfItems() {
  return listOfItems;
 }
   public void setListOfItems(LabelValueBean[] beans) {
  listOfItems = beans;
 }   
}
   
  Actions:
public class DisplayAction extends org.apache.struts.action.Action { 
  
 public ActionForward execute(
    ActionMapping mapping,
    ActionForm form,
    HttpServletRequest request,
    HttpServletResponse response)
    throws NestedException {
    
  TestingForm testingForm = (TestingForm) form;
  
  if (null == testingForm || null ==testingForm.getListOfItems()) {
   LabelValueBean[] listOfItems = new   LabelValueBean[3];
   LabelValueBean bean1 = new LabelValueBean("1", "");
   LabelValueBean bean2 = new LabelValueBean("2", "");
   LabelValueBean bean3 = new LabelValueBean("3", "");
   listOfItems[0]=bean1;
   listOfItems[1]=bean2;
   listOfItems[2]=bean3;
   testingForm.setListOfItems(listOfItems); 
  }
  
         return mapping.findForward("success");
 }
}
  
public class TestingSaveAction extends org.apache.struts.action.Action{
  
 public ActionForward executeAction(
  ActionMapping mapping,
  ActionForm form,
  HttpServletRequest request,
  HttpServletResponse response)
  throws NestedException {
  
  TestingForm testingForm = (TestingForm) form;
  
  return mapping.findForward("success");
 }
   
  struts-config.xml
<global-forwards>
       <forward name="displayTesting" path="/displayAction.do"/>
</global-forwards>
  <form-bean name="testingForm" type="MyPath.TestingForm" />
  <action path="/displayAction" type="MyPath.DisplayAction" 
  name="testingForm" scope="request" 
  validate="false" >
  <forward name="success" path="/MyPath/testing.jsp" /> 
</action>
  
<action path="/testingSaveAction" type="MyPath.TestingSaveAction" 
  name="testingForm" scope="request" 
  validate="true" input="displayTesting">
  <forward name="success" path="/MyPath/successful.jsp" />  
</action> 
 
  validation.xml
 <form name="/testingSaveAction"> 
          <field property="value" indexedListProperty="listOfItems" 
depends="required">
             <msg name="required" key="Keytoerrormessage.cannotblank"/>
   </field>
          
  </form>
  
 
  Errors when click on save:
E SRVE0026E: [Servlet Error]-[BeanUtils.populate]: 
java.lang.reflect.InvocationTargetException: java.lang.NullPointerException
 at MyPath.TestingForm.getLabelValue(TestingForm.java:75)
 at java.lang.reflect.Method.invoke(Native Method)
 at 
org.apache.commons.beanutils.PropertyUtils.getIndexedProperty(PropertyUtils.java:493)
  where line 75 is the place: return (LabelValueBean)listOfItems[index]; in the 
actionform
  

 
    
---------------------------------
  Talk is cheap. Use Yahoo! Messenger to make PC-to-Phone calls. Great rates 
starting at 1ยข/min.


                
---------------------------------
Talk is cheap. Use Yahoo! Messenger to make PC-to-Phone calls.  Great rates 
starting at 1&cent;/min.

Reply via email to