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

并在方法内部访问这些参数。