如何在同一个动作中使用Address
和Certificate
类对象使用ModelDriven
和 package com.acv.in.action;
import java.util.HashSet;
import java.util.Set;
import com.acv.in.bean.Student;
import com.acv.in.dao.DAO;
import com.acv.in.dao.DAOImpl;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
public class UserActionImpl extends ActionSupport implements ModelDriven<Student>{
private static final long serialVersionUID = 1L;
Set<String> docList= new HashSet<String>();
DAO dao= new DAOImpl();
private Student student= new Student();
@Override
public Student getModel() {
// TODO Auto-generated method stub
return student;
}
类对象在Struts2中使用Hibernate执行集合映射?
这是代码示例:
public UserActionImpl()
{
}
public String add() {
System.out.println("inside add");
dao.insert(student);
return "success";
}
public String delete() {
// TODO Auto-generated method stub
return "success";
}
public String update() {
// TODO Auto-generated method stub
return "success";
}
public String getById() {
// TODO Auto-generated method stub
return "success";
}
public String getAll() {
// TODO Auto-generated method stub
return "success";
}
public Set<String> getDocList() {
return docList;
}
public void setDocList(Set<String> docList) {
this.docList = docList;
}
public Student getStudent() {
return student;
}
public void setStudent(Student student) {
this.student = student;
}
public DAO getDao() {
return dao;
}
public void setDao(DAO dao) {
this.dao = dao;
}
}
如何返回地址和证书对象。
model.freqItemsets
.map { fi => s"""[${fi.items.mkString(",")}], ${fi.freq}""" }
.saveAsTextFile(path)
答案 0 :(得分:1)
如果您正在使用ModelDriven
并且您有多个bean(在同一个操作类中),则必须绑定到视图。您可以将它们聚合到模型对象。
public class Student {
private Address address;
private Certificate certificate;
//getters and setters
}
在JSP中,您可以使用address.xxx
和certificate.yyy
名称。使用此方法,通过指定前缀名称而不对模型对象进行类型检查来映射不同类型的bean的属性,这是最好的方法。
如果你有多个动作类,你可以使用自己的模型,如
public class AddressActionImpl extends ActionSupport implements ModelDriven<Address>{ }
public class CertificateActionImpl extends ActionSupport implements ModelDriven<Certificate>{ }
但是这种方法的问题是如果你共享相同的JSP你不应该同时使用它们,因为它无法区分属性所属的类。
如果您实现ModelDriven<Object>
然后将任一实例作为模型对象返回,则同样如此。视图不知道使用哪个模型绑定其属性(除非您明确检查实例类型)。它只是假设模型具有绑定的属性。
附注:使用不同类型的模型会给应用程序逻辑带来不必要的复杂性,以及代码的重复。如果您没有必要使用模型驱动,那么最好避免使用它。您可以使用聚合到操作类而不是模型类的不同类的多个对象。