2

我有两节课:

让我们说

class ABC{

private String a,b;

public void setA(String a){
this.a = a;
}

public void setB(String b){
this.b = b;
}

public String getA(){
return this.a;
}

public String getB(){
return this.b ;
}

}



class XYZ{

private ABC abc;

public void setABC(ABC abc){
this.abc = abc;
}

public ABC getABC(){
return this.abc;
}

}

类 XYZ 具有类 ABC 属性。

我想在 JSTL 的帮助下
以这种方式访问​​ JSP 页面之一中的类 ABC 属性的 a 或 b

${XYZ.ABC.A}
4

4 回答 4

3

要在 JSP 中引用 bean 需要将对象放入请求中。

request.setAttribute("xyz", xyz);

然后通过${xyz.abc.a}JSP 访问它。

于 2013-02-05T11:17:51.580 回答
0

可以使用 JSTL 标签。试试这个 ${XYZ object name.abc.a}

于 2013-02-05T11:09:53.747 回答
0

代替

public void setABC(ABC abc){
this.abc = abc;
}

public ABC getABC(){
return this.abc;
}

采用

public void setAbc(ABC abc){
this.abc = abc;
}

public ABC getAbc(){
return this.abc;
}

使用此 JSTL 语法 ${XYZ.abc.a} 检索信息

于 2013-02-05T11:10:17.287 回答
0

我看到这个问题出现了很多,所以我添加了明确的语法,并在最后添加了一个示例。

第一个问题是,据我所知,您不能轻松地将多个模型添加到表单中。

modelAttribute="productDTO" //is okay

modelAttribute="productDTO, vatDTO" //doesn't work

不像其他海报说的,只是尝试

${A.B.C}

如果 B 是需要自己的模型的对象,也将不起作用。简单的解决方案不是创建一个特殊的 DTO 来容纳所有额外的对象,而是向您的“productDTO”类添加一个额外的“getter”方法,该方法只返回一个字符串代码或其他简单类型:

   public class ProductDTO implements Serializable {

       private static final long serialVersionUID = -5974170234812308892L;
       VatCode vatCode; //an object

       public String getVatCodeAsString() {
           return vatCode.getVATCode(); //useful if it's a code or something flat
       }

       public VatCode getVatCode() {
           return vatCode(); //the JSP won't know what this model is
       }

然后你可以在你的jsp页面中访问这个方法:

value="${productDTO.vatCodeAsString}

我使用它,我可以保证它有效。


但是,如果您需要访问复杂的对象,则语法如下:

在您的控制器中:

 ProductAdminWebDTO productAdminWebDTO = new ProductAdminWebDTO();
 productAdminWebDTO.setProductDTO(productService.getProductByID(prodNo)); 
 modelAndView.addObject("productAdminWebDTO", productAdminWebDTO);

其中 ProductAdminWebDTO 包含:

private ProductDTO productDTO;

ProductDTO 包含:

 private String productName; //(make sure to add correct getter, setters)

在您的 JSP 中:

 <form:form method="post" id="viewForm"
               action="GET" modelAttribute="productAdminWebDTO">

<form:input path="productDTO" id="productDTO" type="text" value="${productAdminWebDTO.productDTO.productName}"/>

请注意,顶级元素是“productAdminWebDTO”,但在路径中,您只添加与包含的变量对应的元素。但是完整的路径,(正如其他海报所指出的),在价值。

于 2017-01-20T14:56:18.730 回答