使用jsp:setProperty在其他bean中设置一个bean

时间:2011-02-03 14:21:24

标签: java jsp

我想知道如何在以下场景中使用jsp:setProperty。这是两个java类的简单示例。

public class MyExample {
  private MyName myNameExample = new MyName();

  public MyExample() {}

  public MyName getMyNameExample() {
    return myNameExample;
  }
  public void setMyNameExample(MyName setTo) {
    myNameExample = setTo;
  }
}

public class MyName {
  private String firstName;

  public MyName() {}


  public String getFirstName() {
    return firstName;
  }
  public String setFirstName(String setTo) {
    firstName = setTo;
  }
}

我试图使用类似的东西:

<jsp:useBean id="example" class="MyExample" scope="page"/>
<jsp:setProperty name="example" property="????" value="aFirstName"/>

这里的重要部分是我想从MyExample中引用MyName对象。因此,创建一个bean来直接访问MyName对我没有帮助。所以我不是在寻找这个答案:

<jsp:useBean id="name" class="MyName" scope="page"/>
<jsp:setProperty name="name" property="firstName" value="aFirstName"/>

1 个答案:

答案 0 :(得分:2)

你可以创建两个bean,并在${}之间设置另一个bean。

<jsp:useBean id="myName" class="MyName" scope="page" />
<jsp:setProperty name="myName" property="firstName" value="aFirstName" />
<jsp:useBean id="myExample" class="MyExample" scope="page" />
<jsp:setProperty name="myExample" property="myExampleName" value="${myName}" />

与具体问题无关,我建议花时间学习servlet和MVC。以上是在视图中控制模型的一种非常老式且紧密耦合的方式。

请注意,使用无包装类可能无法在所有情况下使用(因为它们对于包内的普通类是不可见的)。只有在某些Apache Tomcat配置中它才有效。而是将您的类放在包中,以便不依赖于它。