【问题标题】:Using jsp:setProperty to set one bean in other bean使用 jsp:setProperty 在另一个 bean 中设置一个 bean
【发布时间】:2011-02-03 14:21:24
【问题描述】:

我想知道如何在以下场景中使用 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 对象。因此,创建一个直接访问 MyName 的 bean 对我没有帮助。所以我不是在寻找这个答案:

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

【问题讨论】:

  • 所以您希望能够在第一种类型的 bean 上设置“example.firstName”或“example.lastName”,对吧?

标签: java jsp


【解决方案1】:

您可以创建两个 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 配置中它才会起作用。而是将您的类放在一个包中,以免依赖它。

【讨论】:

  • 谢谢。这是我一直在寻找的解决方案。另外,感谢有关 servlet 和 MVC 的建议。我会看看。我的公司使用过时的应用服务器版本,这意味着某些技术不可用。就个人而言,我很想使用 JSF,但我做不到。最后,为了简单起见,我放弃了包结构。但是,是的,正如您所注意到的,所有 Java 类都应该在包中!
猜你喜欢
  • 1970-01-01
  • 2017-09-07
  • 1970-01-01
  • 2015-12-10
  • 2010-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-12
相关资源
最近更新 更多