小编典典

Jsp Struts2中Action类的调用函数

jsp

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

我有两个动作类,一个是UsersManagemntAction,另一个是DomainsManagementAaction。我UsersManagemntAction用来执行与用户相关的CRUD操作。在User课堂上我有一个属性domainId。此属性将包含idDomain哪个用户属于。我的问题是,当我在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;
}

}

阅读 316

收藏
2020-06-08

共1个答案

小编典典

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

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