0

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

我在动作类中设置了变量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>

但我仍然无法取出变量。任何人都可以帮助我还是我只是有一个 ID-10-T 时刻?

4

2 回答 2

1

可能是您的 Action 类不是 JavaBean(即,submissionFailure 字段上没有 getter)。从 Struts1 参考资料

首先,您的 ActionForm bean 必须有一个零参数的构造函数。这是必需的,因为框架必须能够动态地创建表单 bean 类的新实例,同时只知道类名。然而,这并不是一个繁重的限制,因为框架还将为您填充表单 bean 的属性(来自请求参数)。

其次,通过提供遵循 JavaBeans 规范中描述的命名设计模式的公共 getter 和 setter 方法,框架可以使用表单 bean 的字段。对于大多数用户来说,这意味着对每个表单 bean 的属性使用以下习惯用法:

private {type} fieldName;

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

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

于 2010-11-25T00:10:04.773 回答
1

It was an I-D-10-T moment on my part. I was trying too hard. Here is the code I ended up using:

<c:choose>
    <c:when test="${submissionFailure}">
         <%-- Do something --%>
    </c:when>
    <c:otherwise>
         <%-- Do something else --%>
    </c:otherwise>
</c:choose>
于 2010-11-29T16:19:31.870 回答