原来做的东西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不已经封装了吗?