Struts 2和业务对象

时间:2013-11-17 21:38:11

标签: java java-ee struts2 struts business-objects

在Struts 2类http get params are auto fetched by field variables中。虽然在许多类中都重复了userId,groupId,等类似的类字段,但我决定在每个类中创建一个业务对象类RequestParams 并将所有字段放在那里。

然后,我的所有课程都只有RequestParams rp; getRp();setRp();,rp类将userId包含getter / setter和所有其他字段。

现在我知道我必须更换。例如userIdgetRp()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);       
        }

    }

}

1 个答案:

答案 0 :(得分:0)

这种方法没有错,如果你聚合一个类并想要访问它的属性,那么公共访问器适合你,你也可以通过OGNL访问它们。该操作位于valueStack之上,因此表达式看起来会更加简单"rp.userId"。无论如何,没有必要将所有参数传递给方法,您可以使用简化的方法签名

ChatDao.saveMessage(rp);  

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