都说了没有执行体里的set操作,怎么可能是 Name is Fred
时间: 2024-03-31 18:37:09 浏览: 9
非常抱歉,我之前的回答仍然有误,没有考虑到 `jsp:useBean` 标签没有指定 `class` 属性的情况,导致最终输出结果不正确。实际上,在这种情况下,`jsp:setProperty` 标签中的属性设置操作将不会执行,因此无法将值设置到 `person` 对象的属性中。
因此,如果 `person` 对象在请求作用域中不存在,或者存在但是类型不是 `foo.Employee`,则 `jsp:useBean` 标签会创建一个新的 `foo.Employee` 对象,并将其作用域设置为请求。但由于 `jsp:setProperty` 标签中的属性设置操作没有执行,因此最终输出结果为 "Name is null"。
非常感谢你的指正,希望我的新回答能够解决你的疑惑。
相关问题
有servlet代码如下: foo.Person p = new foo.Employee(); p.setName("Evan"); request.setAttribute("person", p); servlet将请求转发到如下jsp, <jsp:useBean id="person" type="foo.Employee" scope="request" > <jsp:setProperty name="person" property="name" value="Fred" /> </jsp:useBean> Name is <jsp:getProperty name="person" property="name" /> 会有什么结果
在这个例子中,servlet创建了一个 `foo.Person` 对象的实例 `p`,然后将其强制转换为 `foo.Employee` 对象并设置其名称为 "Evan"。接着,servlet将 `p` 对象作为属性设置到请求中,并将请求转发到 `jsp` 页面。
在 `jsp` 页面中,`jsp:useBean` 标签使用 `id` 属性为 `person` 创建了一个名为 `person` 的 `foo.Employee` 对象,并将其作用域设置为请求。接着,`jsp:setProperty` 标签设置了 `person` 对象的名称为 "Fred"。最后,`jsp:getProperty` 标签显示了 `person` 对象的名称属性。
因此,最终输出结果为 "Name is Fred"。注意,这里的 `foo.Employee` 对象实际上是由 `foo.Person` 对象强制转换得到的,因此可能存在类型转换错误的风险。
在spring配置文件中,关于<bean id="foo" class="foo.Bar"><property name="fred.sammy" value="123"/></bean>说明正确的有>
关于该配置文件中的bean,以下说法是正确的:
1. 该bean的id是"foo",class是"foo.Bar",表示创建一个id为"foo",类型为"foo.Bar"的bean实例。
2. 在该bean中有一个属性名为"fred.sammy",值为"123",表示为该bean的属性"fred.sammy"赋值为"123"。
3. 如果该bean的class中没有定义属性"fred.sammy",则会抛出异常。