在Jsp Struts2中调用Action类的函数

时间:2014-01-16 18:55:07

标签: java jsp struts2 ognl valuestack

我有一点情景。我有两个POJO类和两个表UserDomain(表的名称相同)。每个用户都属于一个且只有一个域。

我有两个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;
}

}

1 个答案:

答案 0 :(得分:3)

你可以从值堆栈中获取它,同时在值堆栈顶部迭代User对象,这样你就可以得到它

public String getDomainName(){
  User user = (User) ActionContext.getContext().getValueStack().peek();
  return domainService.findDomainById(user.getDomainId()).getName();
}