我有两节课:
让我们说
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;
}
}
具有ABC类属性的类XYZ。
我想在JSTL的帮助下访问JSP页面中的ABC类属性a或b 以这种方式
${XYZ.ABC.A}
答案 0 :(得分:3)
要在JSP中引用bean,需要将对象放入请求中。
request.setAttribute("xyz", xyz);
然后通过JSP中的${xyz.abc.a}
访问它。
答案 1 :(得分:0)
可以使用JSTL标签。试试这个 $ {XYZ object name.abc.a}
答案 2 :(得分: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}
检索信息答案 3 :(得分:0)
我看到这个问题出现了很多,所以我添加了明确的语法,并在最后添加了一个例子。
第一个问题是,据我所知,您无法轻松地将多个模型添加到表单中。
modelAttribute="productDTO" //is okay
modelAttribute="productDTO, vatDTO" //doesn't work
与其他海报不同,只是尝试
${A.B.C}
如果B是需要自己模型的对象,也将无效。简单的解决方案,而不是创建一个特殊的DTO只是为了容纳所有额外的对象是添加额外的" getter"你" productDTO"的方法class,一个只返回String代码的类,或其他简单类型:
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}"/>
请注意,顶级元素是&#34; productAdminWebDTO&#34;,但在路径中,您只添加与包含的变量对应的元素。但是完整的路径(正如其他海报所指出的那样),在价值中。