Struts 2和业务对象
在Struts 2类中, http get params由字段变量自动获取 。 虽然在许多类中都重复了诸如userId,groupId,
等类字段,但我决定在每个类中创建一个业务对象类RequestParams
并将所有字段放在那里。
然后我所有的课程都只有RequestParams rp;
使用getRp();
和setRp();
rp类将使用带有getter / setter和所有其他字段的userId
。
现在我看到我必须更换。 例如userId
with getRp()
。 getUserId();
第34行现在代码看起来很难看。
有了这个: messageId = ChatDao.saveMessage(userId,groupId , message);
看起来像
rp.setMessageId( ChatDao.saveMessage(rp.getUserId(), rp.getGroupId(), rp.getMessag() ) );
做这种事情的更好方法是什么?
public class SendMessageOrStartChatAction extends BaseActoinSupport{ private static final long serialVersionUID = 1L; private int userId; private int groupType; private int groupId; private String groupTitle; private String groupMemberIds; private int randomCode; private String message; private int messageId; //internal class ues @Override /** boo */ protected void doExecute() throws IOException { //check if it had random code in db, (msg already saved in db) if(ChatDao.randomCodeExists(randomCode)){ messageId = ChatDao.getMessageIdThatMatchesRandomCode(randomCode); write(messageId); }else{ if(groupId <= 0){ //create group groupId = ChatDao.createChatGroup(userId, groupTitle, groupType); String[] memberIdsArray = groupMemberIds.split("=="); ChatDao.addUsersToGroup(groupId, memberIdsArray); } //save message messageId = ChatDao.saveMessage(userId,groupId , message); // queued: may be put this in last viewed messages here. may be. write(messageId); } } }
这种方法没有错,如果你聚合一个类并想要访问它的属性,那么公共访问器适合你,你也可以通过OGNL访问它们。 该操作位于valueStack
,因此表达式看起来会更简单"rp.userId"
。 无论如何,没有必要将所有参数传递给方法,您可以使用简化的方法签名
ChatDao.saveMessage(rp);
并在方法内部访问这些参数。