我有一个小场景。我有两个POJO类和两个表User,Domain(表的名称相同)。每个用户将属于一个并且只有一个域。
User
Domain
我有两个动作类,一个是UsersManagemntAction,另一个是DomainsManagementAaction。我UsersManagemntAction用来执行与用户相关的CRUD操作。在User课堂上我有一个属性domainId。此属性将包含id的Domain哪个用户属于。我的问题是,当我在jsp页面中显示用户信息时,会显示domainId带有用户信息的。这是因为用户对象将具有domainId。而不是显示domainId我想显示域名。我无法执行联接查询。我应该解决的问题是,当我显示用户信息时,我在用户管理操作类中调用一个函数,并将该domainId函数传递给该函数。该功能执行搜索Domain表并返回域名。该解决方案不起作用,因为我找不到任何传递domainId给该函数的方法。我可以调用UsersManagemntAction类的函数,但无法通过domainId。请帮助我,否则以其他方式建议我其他解决方案。
UsersManagemntAction
DomainsManagementAaction
domainId
id
下面是JSP页面和User类的代码。
JSP:
<s:if test="users.size() > 0"> <tbody> <s:iterator value="users" > <tr> <td><s:property value="userId" /></td> <td><s:property value="loginId" /></td> <td><s:property value="password" /></td> <td><s:property value="email" /></td> <td><s:property value="domainName" /></td> <!--- It will call getDomainName function in action class --> </td> </tr> </s:iterator> </tbody>
User.java:
public class User { private Long userId; private String loginId; private String password; private String email; private Long domainId; public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Long getDomainId() { return domainId; } public void setDomainId(Long domainId) { this.domainId = domainId; } public void setUserId(Long userId) { this.userId = userId; } public Long getUserId() { return userId; } @Override public String toString() { return "User [domainId=" + domainId + ", password=" + password + ", userId=" + userId + ", Login Id=" + getLoginId() + "]"; } public String getLoginId() { return loginId; } public void setLoginId(String loginId) { this.loginId = loginId; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } }
您可以在值堆栈User顶部迭代对象时从值堆栈中获取它,因此可以在此处获取它
public String getDomainName(){ User user = (User) ActionContext.getContext().getValueStack().peek(); return domainService.findDomainById(user.getDomainId()).getName(); }