dsm02955299 2009-03-17 21:16
浏览 305
已采纳

struts1.x里po转formBean

原来做的东西po和formbean的互转都在Action里进行,如此Action里会出现很多繁琐的代码,太难看了。
于是想到,是否可以将转化移到formbean里,不知如此设计是否优雅!
例如,如下:


public class MessageForm extends ActionForm {
private static final long serialVersionUID = 8426826295606814692L;

private Message message = new Message();

public MessageForm() {
}

public String getTitle() {
    return message.getTitle();
}

public void setTitle(String title) {
    message.setTitle(title);
}

public Edition getStyle() {
    return message.getEdition();
}

public void setStyle(String style) {
    Edition edition = new Edition();
    String editionName = style.substring(style.indexOf('>') + 1, style.length()).trim();
    edition.setName(editionName);
    message.setEdition(edition);
}

public String getContent() {
    return message.getContent();
}

public void setContent(String content) {
    message.setContent(content);
}

public Set<File> getFile() {
    return message.getAttachments();
}

public void setFile(String[] file) {
    Set<File> files = message.getAttachments();
    for (String string : file) {
        File temp = new File();
        temp.setId(Integer.parseInt(string));
        files.add(temp);
    }
}

public Message getMessage() {
    return message;
}

public void setMessage(Message message) {
    this.message = message;
}

public void setGrantSee(String[] grantSee) {
    Set<MessageGrant> grants = message.getMessageGrants();
    for (String string : grantSee) {
        String userName = string.substring(string.indexOf('>') + 1, string.length()).trim();
        User user = new User();
        user.setName(userName);
        MessageGrant tempGrant = new MessageGrant();
        tempGrant.setUser(user);
        tempGrant.setMessage(message);
        Function function = new Function();
        function.setName("see");
        tempGrant.setFunction(function);
        grants.add(tempGrant);
    }
}

public void setGrantUpdate(String[] grantUpdate) {
    Set<MessageGrant> grants = message.getMessageGrants();
    for (String string : grantUpdate) {
        String userName = string.substring(string.indexOf('>') + 1, string.length()).trim();
        User user = new User();
        user.setName(userName);
        MessageGrant tempGrant = new MessageGrant();
        tempGrant.setUser(user);
        tempGrant.setMessage(message);
        Function function = new Function();
        function.setName("update");
        tempGrant.setFunction(function);
        grants.add(tempGrant);
    }
}

}



例外,最近翻出了一堆3,4年前的老帖,有提到将返回的业务数据list直接放在form当中,传入request使用,不知如此的设计和直接request.setAttribute()在设计上面个有什么有缺。莫非是因为将传递的数据封装后更加的oo?request不已经封装了吗?
  • 写回答

2条回答 默认 最新

  • qiao88 2009-03-18 13:35
    关注

    你可以写个工具类啊(form和entity的转换),在action中调用啊

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效