5
<jsp:setproperty name="Test" property="*">

这是什么意思?

我知道定义是“在指定的 JavaBean 实例中设置一个属性”。那么在 javaBean 测试中设置属性又是什么?

4

2 回答 2

21

这是一个完整的例子:

表单.html

<form method="POST" action="processForm.jsp">
    <input name="name"/>
    <input name="username"/>          
    <input name="jobTitle"/>
    <input name="city"/>
<input type="submit">   

该表单从用户那里收集输入并将其发布到 processForm.jsp 页面。

进程表单.jsp

<%@ page import = "com.Employee"%>

...

<jsp:useBean id="employee" type="com.Person" class="com.Employee">
    <jsp:setProperty name="employee" property="*"/>
</jsp:useBean>

<jsp:useBean>操作创建一个由com.Employee引用引用的com.Person类型的对象。

<jsp:setProperty>操作将每个输入元素的名称与Employee对象中的 getter 方法的名称相匹配。

例如:name匹配getNamejobTitle匹配getJobTitle。下面是Employee类。我没有包含Person界面。

雇员.java

public class Employee implements Person{
   
    private String name;
    private String username;
    private String jobTitle;
    private String city;
   
    public String getJobTitle() {
           return jobTitle;
   }
    public void setJobTitle(String jobTitle) {
           this.jobTitle = jobTitle;
   }
    public String getName() {
           return name;
   }
    public void setName(String name) {
           this.name = name;
   }
    public String getCity() {
           return city;
   }
    public void setCity(String city) {
           this.city = city;
   }
    public String getUsername() {
           return username ;
   }
    public void setUsername(String username) {
           this.username = username;
   }        
}

关于此标准动作的注意事项。

  1. 输入元素的名称必须与目标对象的 getter 方法匹配。名称 --> 获取名称等。
  2. 小心类型。您不能匹配到 Map 或 Array
  3. 如果属性是对象,也是如此。它需要单独处理。
  4. 如果 Employee 中的属性类型是 int 并且在表单中输入的值不能转换为 int,那么将抛出 java.lang.NumberFormatException。
于 2013-10-09T15:57:31.340 回答
6

星号 (*) 用作操作的属性属性值。这意味着所有名称与发送到页面的请求参数匹配的 bean 属性都会自动设置

于 2013-10-09T14:19:48.313 回答