class Site{
  String id;
  String name;
  Set<SiteProperty> properties;
  ...setter/getter
}
 
class SiteProperty{
 String typeId;
 String typeName;
 Site site;
 ...
 setter/getter
}
 
SiteController.java
class SiteController extends ActionSupport{
  Site site;
  setter/getter...
  public String update(){
     Session session = SessionFactory.getSession();
     Transaction tx = session.beginTransaction();
     try{
        session.saveOrUpdate(site);
        Set props = site.getProperties();
        Iterator it = props.iterator();
        while(it.hasNext()){
           SiteProperty prop = (SiteProperty)it.next();
           prop.setSite(site);
           session.saveOrUpdate(prop);
        }
        tx.commit();
     }catch(HibernateException e){
        tx.rollback();
     }
     return "index";
  }
}
 
site-edit.jsp:
<s:form action="site/%{site.id}">
  <s:hidden name="_method" value="put"/>
  <s:textvalue name="site.id"/>
  <s:textvalue name="site.name"/>
  <s:iterator value="site.properties">
     <s:textvalue name="propId"/>
     <s:textvalue name="propName"/>
     <s:textvalue name="site.id"/>
  </s:iterator>
  <s:submit/>
</s:form>
 
my question is,i can insert/update Site entity into database, while the 
properties<SiteProperty> cannot save to database, even in memory,the properties 
data refuse to take any change i made in client.
 
i'm confused by form/action mapping, how does the data transfer to action when 
client submit the form? i traced the action's setter/getter method,there is no 
step into these methods,how does the request data transfer to action?
 
thank you.


 

Reply via email to