3

我有一个小场景。我有两个 POJO 类和两个表UserDomain(表的名称相同)。每个用户将属于一个且仅一个域。

我有两个动作类,一个是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>

用户.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;
}

}
4

1 回答 1

3

您可以从值堆栈中获取它,同时在User值堆栈顶部迭代对象,因此您可以在那里获取它

public String getDomainName(){
  User user = (User) ActionContext.getContext().getValueStack().peek();
  return domainService.findDomainById(user.getDomainId()).getName();
}
于 2014-01-16T21:20:31.840 回答