在我的servlet中,我设置了一个请求属性,其名称来自另一个类。
在我的JSP中,我想使用EL访问该请求属性,但是如何告诉EL查找请求属性的名称作为另一个类的常量字段?
这是我的例子:
我有一个班级RoleDTO
:
public class RoleDTO implements Serializable {
private int roleId;
private String roleDescription;
public int getRoleId() {
return roleId;
}
public void setRoleId(int roleId) {
this.roleId = roleId;
}
public String getRoleDescription() {
return roleDescription;
}
public void setRoleDescription(String roleDescription) {
this.roleDescription = roleDescription;
}
}
我有一个类RoleConstant
,它有一个常量定义:
public class RoleConstant {
public static final String ROLE_LIST = "roleDTOs";
}
我有一个servlet RoleServlet
,我正在创建一个RoleDTO
对象列表,并将其设置为请求对象作为属性名称与RoleConstant
类中定义的常量相同的属性,在转发到role.jsp
之前:
public class RoleServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
List<RoleDTO> roleDTOList = new ArrayList<RoleDTO>();
RoleDTO roleDTO1 = new RoleDTO();
roleDTO1.roleId = 1;
roleDTO1.roleDescription = "Administrator";
roleDTOList.add(roleDTO1);
RoleDTO roleDTO2 = new RoleDTO();
roleDTO2.roleId = 2;
roleDTO2.roleDescription = "Guest";
roleDTOList.add(roleDTO2);
request.setAttribute(RoleConstant.ROLE_LIST, roleDTOList);
RequestDispatcher view = request.getRequestDispatcher("role.jsp");
view.forward(request, response);
}
}
在role.jsp
中,我按名称访问请求属性以获取RoleDTO
个对象的列表,并根据其内容启用或禁用&lt; select>
html元素:
<c:if test="${empty Test05Constant.ATTRIBUTE_ROLE_LIST}">
<select id="select_role" name="select_role" disabled="disabled">
</select>
</c:if>
<c:if test="${not empty Test05Constant.ATTRIBUTE_ROLE_LIST}">
<select id="select_role" name="select_role">
</select>
</c:if>
但是上面的代码不起作用,即使有<select>
个对象的列表,RoleDTO
html元素也显示为已禁用。
如果我像这样硬编码请求属性名称:
<c:if test="${empty roleDTOs}">
<select id="select_role" name="select_role" disabled="disabled">
</select>
</c:if>
<c:if test="${not empty roleDTOs}">
<select id="select_role" name="select_role">
</select>
</c:if>
然后它有效,当有<select>
个对象的列表时,RoleDTO
html元素显示为已启用
在这种情况下,我无法进行硬编码。谁能告诉我如何让这个工作?
由于
答案 0 :(得分:0)
我们无法在jstl中访问静态变量。对于变通方法,我们可以将静态变量分配给非静态变量,然后尝试访问它。作为参考,您可以通过For workaround please go through或我能想到的其他方式通过setter方法进行访问。