gpt4 book ai didi

java - 在 Struts 2 中使用 ModelDriven 的多个不同的 POJO

转载 作者:行者123 更新时间:2023-11-30 10:48:03 27 4
gpt4 key购买 nike

如何在相同的Action中使用ModelDriven接口(interface)使用AddressCertificate类对象来执行不同的POJO在 Struts2 中使用 Hibernate 进行集合映射?

这是代码示例:

 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;
}

如何返回AddressCertificate对象?

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;
}


}

最佳答案

如果您使用 ModelDriven并且您有多个必须绑定(bind)到 View 的 bean(在同一个操作类中)。您可以将它们聚合到模型对象。

public class Student {
private Address address;
private Certificate certificate;
//getters and setters
}

在 JSP 中,您可以使用 address.xxxcertificate.yyy名字。这种方法的最佳之处在于,您可以通过指定前缀名称来映射不同类型 bean 的属性,而无需对模型对象进行类型检查。

如果你有多个 Action 类,你可以使用它们自己的模型,比如

public class AddressActionImpl extends ActionSupport implements  ModelDriven<Address>{ }

public class CertificateActionImpl extends ActionSupport implements ModelDriven<Certificate>{ }

但这种方法的问题是,如果您共享同一个 JSP,则不应同时使用它们,因为它无法区分属性属于哪个类。

同样的事情,如果你实现 ModelDriven<Object>然后将任一实例作为模型对象返回。 View 不知道哪个模型用于绑定(bind)其属性(除非您明确检查实例类型)。它只是假定模型具有绑定(bind)到的属性。

旁注:

使用不同类型的模型会给应用程序逻辑带来不必要的复杂性,以及重复代码。如果您没有必要使用 ModelDriven ,那么最好避免它。您可以使用聚合到 Action 的不同类的多个对象类而不是模型类。

关于java - 在 Struts 2 中使用 ModelDriven 的多个不同的 POJO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35969827/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com