1

首先,我是 Struts 的新手。我有一堂课:

public class Articulo {

private int codigo;
private String descripcion;

public int getCodigo() {
    return codigo;
}
public void setCodigo(int codigo) {
    this.codigo = codigo;
}
public String getDescripcion() {
    return descripcion;
}
public void setDescripcion(String descripcion) {
    this.descripcion = descripcion;
}

}

它填充了调度程序中的值。在调度程序中,我已经

private Articulo articulo;
.......
public Articulo getArticulo() {
    return articulo;
}

public void setArticulo(Articulo articulo) {
    this.articulo = articulo;
}

还有一个JSP

<s:property value="articulo"/>

这篇文章读得不错。也适用于关节

<s:property value="articulo.codigo"/>

但是现在我想从那个 jsp 中将整个对象 articulo 转发到另一个动作。我可以

<s:hidden name="articulo.codigo" value="%{articulo.codigo}"/>
<s:hidden name="articulo.descripcion" value="%{articulo.descripcion}"/>

这很好用,但无论如何可以做类似的事情

<s:hidden name="articulo" value="%{articulo}"/>

那么,有没有办法在不设置它的所有属性的情况下从 JSP 中获取对象?

4

3 回答 3

2

有2点:

  1. 问题:您不能使用<s:hidden />所有参数传输对象,使用HTTP传输的应该是字符串。由于您无法将此对象转换为字符串,因此您也无法使用 HTTP 传输它。

  2. 解决方案:您可以将您的对象放入会话中,以便您可以随时访问它。这是一个示例

于 2012-09-19T14:14:15.907 回答
0

是的,您可以通过参数以两种方式传输对象,也可以将其存储在会话中并在需要时访问它。

<jsp:forward page="URL" >
  <jsp:param name="ParamName1" value="YourObject" />
</jsp:forward>

访问这里了解更多详情。 http://www.gulland.com/courses/jsp/actions/forward

于 2012-09-19T14:28:37.093 回答
0

将对象信息保存在会话中通常是首选方法。

但另一种选择是创建自己的Type Converter

通过扩展 StrutsTypeConverter 创建一个类型转换器。Converter的作用是将String转换为Object,将Object转换为String。

通过这样做,你可以这样<s:hidden name="articulo" value="%{articulo}"/>

请记住,这种方法是不安全的,因为对象值将在隐藏标签中打印为字符串,并且可以通过浏览器看到。

但优点是,如果您需要这样的东西,这种方法可以跨不同的会话工作。

于 2012-09-19T15:43:08.147 回答