我有一点情景。我有两个POJO类和两个表User
和Domain
(表的名称相同)。每个用户都属于一个且只有一个域。
我有两个Action类,一个是UsersManagemntAction
,另一个是DomainsManagementAaction
。我使用UsersManagemntAction
来执行与用户相关的CRUD操作。在我的User
课程中,我有一个属性domainId
。此属性将包含用户所属的id
Domain
。我的问题是,当我在jsp页面中显示用户信息时,我会向用户信息显示domainId
。这是因为用户对象将具有domainId
。而不是显示domainId
我想显示域名。我无法执行连接查询。我应该解决这个问题,当我显示用户的信息时,我在用户管理动作类中调用一个函数,将domainId
传递给该函数。该函数在Domain
表上执行搜索并返回域名。此解决方案无效,因为我没有找到任何方法将domainId
传递给该函数。我可以调用UsersManagemntAction
类的函数但无法通过domainId
。请帮助我或建议我一个替代解决方案。
以下是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;
}
}
答案 0 :(得分:3)
你可以从值堆栈中获取它,同时在值堆栈顶部迭代User
对象,这样你就可以得到它
public String getDomainName(){
User user = (User) ActionContext.getContext().getValueStack().peek();
return domainService.findDomainById(user.getDomainId()).getName();
}