如何在Struts 1中使用JSTL检索请求范围的变量

时间:2010-11-24 20:41:49

标签: jsp java-ee jstl struts-1

我正在重构一些使用Struts 1的遗留代码(请不要使用火焰),而且我很难检索我在Action类中设置的参数。这是我在jsp中使用的代码:

我在Action Class中设置变量submissionFailure,但是当我尝试

<c:out value="${requestScope[cardHolderZipCode]}" />

<c:out value="${requestScope.property[submissionFailure]}" />

然而,没有任何输出。

我在JSP中添加了以下代码,我可以看到requestScope Map中的值:

<b><i>Request Scope</i></b><br/> <c:forEach items="${requestScope}" varStatus="status" var="parameter"> <c:out value="${parameter}"/><br/><br/>
</c:forEach>

但我仍然无法得到变量。任何人都可以帮助我,或者我只是有一个I-D-10-T时刻?

2 个答案:

答案 0 :(得分:1)

可能是您的Action类不是JavaBean(即submissionFailure字段上没有getter)。 From the Struts1 reference

  

首先,你的ActionForm bean必须有   零参数构造函数。这是   因为框架必须是必需的   能够动态创建新的   表单bean类的实例,   虽然只知道班级名称。   这不是一个繁重的限制,   但是,因为框架会   也填充你的表单bean   属性(来自请求   参数)为你。

     

其次,表单bean的字段   通过以下方式提供给框架   提供公共吸气剂和二传手   遵循命名设计的方法   JavaBeans中描述的模式   规格。对于大多数用户而言   表示使用以下习语   每个表单bean的属性:

private {type} fieldName;

public {type} getFieldName() {
  return (this.fieldName);
}
public void setFieldName({type} fieldName) {
  this.fieldName = fieldName;
}

如果这没有帮助,那么您应该考虑将Action类的相关部分发布到您的问题中,以便更好地进行调试。

答案 1 :(得分:1)

这是我的I-D-10-T时刻。我太努力了。这是我最终使用的代码:

<c:choose>
    <c:when test="${submissionFailure}">
         <%-- Do something --%>
    </c:when>
    <c:otherwise>
         <%-- Do something else --%>
    </c:otherwise>
</c:choose>