gpt4 book ai didi

java - 如何根据表单字段选择实例化什么类型的对象?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:13:14 25 4
gpt4 key购买 nike

我有一个接受维护对象的 struts2 表单。有不同类型的维护 - 为简洁起见,假设有 RemovePart 和 InstallPart。此表单包括两个字段,但用户只能看到一个 - 这是基于用户在第一个下拉列表中的选择。

一旦我的操作收到数据,确定要实例化哪个维护类的正确(最佳?)方法是什么?到目前为止我想出的最好的方法如下,尽管我忍不住想有更好的方法来做到这一点。

编辑 6/24 14:18 GMT:RemovedPart 和 InstalledPart 类具有彼此不对应的字段。

public class Maintenance {
private String maintenanceType;

private String removedSerialNumber;
private String removedPartName;
private String removedPartDescription;
private String removedPartPosition;

private String installedSerialNumber;
private String installedPartName;
private String installedPartSource;

// getters and setters
}

public class RemovedPart {
private String serialNumber;
private String partName;
private String partDescription;
private String partPosition;

public static createRemovedPart(Maintenance maintenance) {
return new RemovedPart(maintenance.getRemovedSerialNumber(),
maintenance.getRemovedPartName(), maintenance.getRemovedPartDescription(),
maintenance.getRemovedPartPosition());
}

private RemovedPart() {
this.serialNumber = serialNumber;
this.PartName = partName;
this.partDescription = partDescription;
this.partPosition = partPosition;
}

// getters and setters
}

public class InstalledPart {
//similar to RemovedPart
}

public class MaintAction extends ActionSupport {
Maintenance maintenance;

public String execute() {
if (maintenance.getMaintenanceType().equals("remove")) {
RemovedPart removed = RemovedPart.createRemovedPart(maintenance);
} else {
// you get the idea
}
// more logic
return SUCCESS;
}

最佳答案

我们不知道您的设计有多复杂或多庞大,但从显示的内容来看,如果 Maintenance 类正在声明重复的字段(例如,删除和安装的序列号),而无需同时使用它们,因此它们被声明仅由页面中选择的维护类型填充...那么您不需要 3 个对象,也不需要重复的字段:

  • 声明一个维护类,带有单个字段
  • 将其发布到不同的操作,一个用于删除,一个用于安装。

类型本身将帮助您确定您正在处理两种类型运行的方法中的哪种维护。但是,最好将其转换为枚举:

public enum MaintenanceType {
INSTALLATION(1), REMOVAL(2);

private int type;

private MaintenanceType(int t) {
type = t;
}

public int getType() {
return type;
}
}

public class Maintenance {

private MaintenanceType type;

private String serialNumber;
private String partName;

// getters and setters

public boolean isInstallation(){
return type == MaintenanceType.INSTALLATION;
};
public boolean isRemoval(){
return type == MaintenanceType.REMOVAL;
};
}

关于java - 如何根据表单字段选择实例化什么类型的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24372365/

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