我正在重构一些使用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时刻?
答案 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>