在main.jsp中有如下语句:
<jsp:include page="news.jsp" />
<jsp:include page="weather.jsp" />
<jsp:include page="entertain.jsp" />
在news.jsp中有如下语句:
<jsp:useBean id="newsfeed" class="com.wrox.begjsp.ch2.NewsFeed" scope="request" >
<jsp:setProperty name="newsfeed" property="topic" value="news"/>
<jsp:getProperty name="newsfeed" property="value"/>
</jsp:useBean>
在weather.jsp中有如下语句:
<jsp:useBean id="newsfeed" class="com.wrox.begjsp.ch2.NewsFeed" scope="request" >
<jsp:setProperty name="newsfeed" property="topic" value="weather"/>
</jsp:useBean>
在entertain.jsp中有如下语句:
<jsp:useBean id="newsfeed" class="com.wrox.begjsp.ch2.NewsFeed" scope="request" >
<jsp:setProperty name="newsfeed" property="topic" value="entertainment"/>
<jsp:getProperty name="newsfeed" property="value"/>
</jsp:useBean>
为什么只有news.jsp中的bean执行了,而另外两个页面的bean没执行啊?(好像和scope属性有关)
我在类NewsFeed中加调试用的输出语句,tomcat的命令窗口输出表明只创建的一次bean,另外两个bean没创建,也没执行
<jsp:include page="news.jsp" />
<jsp:include page="weather.jsp" />
<jsp:include page="entertain.jsp" />
在news.jsp中有如下语句:
<jsp:useBean id="newsfeed" class="com.wrox.begjsp.ch2.NewsFeed" scope="request" >
<jsp:setProperty name="newsfeed" property="topic" value="news"/>
<jsp:getProperty name="newsfeed" property="value"/>
</jsp:useBean>
在weather.jsp中有如下语句:
<jsp:useBean id="newsfeed" class="com.wrox.begjsp.ch2.NewsFeed" scope="request" >
<jsp:setProperty name="newsfeed" property="topic" value="weather"/>
</jsp:useBean>
在entertain.jsp中有如下语句:
<jsp:useBean id="newsfeed" class="com.wrox.begjsp.ch2.NewsFeed" scope="request" >
<jsp:setProperty name="newsfeed" property="topic" value="entertainment"/>
<jsp:getProperty name="newsfeed" property="value"/>
</jsp:useBean>
为什么只有news.jsp中的bean执行了,而另外两个页面的bean没执行啊?(好像和scope属性有关)
我在类NewsFeed中加调试用的输出语句,tomcat的命令窗口输出表明只创建的一次bean,另外两个bean没创建,也没执行
解决方案 »
- 请教一个SQL
- jsp多用户商城的基本实现原理
- tomcat出现错误:java.sql.SQLException:After end of result set
- 如何在网页插入各种视频文件
- 请手机网站开发高手指点,table里放置input错误
- Tomcat 问题啊
- 支持Ajax和JSF非常灵活的Web UI开发平台
- 请教,怎么配置一个运行jsp的环境。
- 那位大哥大姐有jdbc for dbase的驱动程序,请发邮件或下载地址给我,急!
- javaweb如何实现分页?视频,代码,链接都可以。谢谢!项目结构如下
- 局域网内能够使用google map api吗?
- 请问哪里有支持IE8的支持JSP的在线编辑器
<jsp:include page="news.jsp" />
<jsp:include page="weather.jsp" />
<jsp:include page="entertain.jsp" />
这三个都是动态include,是属于同一个请求<jsp:useBean id="newsfeed" class="com.wrox.begjsp.ch2.NewsFeed" scope="request" >
这句话表示在request的范围内查找一个com.wrox.begjsp.ch2.NewsFeed类的对象,并赋值给一个变量newsfeed,如果没有该类对象则new一个,如果已经有了则直接获得。你在第一个news.jsp里面已经初始化了,后面两个页面就可以直接拿不需要初始化
我后来改了下,发现这样写可以运行出来:
可以运行的代码:
<jsp:useBean id="newsfeed" class="com.wrox.begjsp.ch2.NewsFeed" scope="request" />
<jsp:setProperty name="newsfeed" property="topic" value="entertainment"/>
<jsp:getProperty name="newsfeed" property="value"/>
和
不可以运行的代码:
<jsp:useBean id="newsfeed" class="com.wrox.begjsp.ch2.NewsFeed" scope="request" >
<jsp:setProperty name="newsfeed" property="topic" value="entertainment"/>
<jsp:getProperty name="newsfeed" property="value"/>
</jsp:useBean>
有区别吗?
<jsp:include page="news.jsp" />
<jsp:include page="weather.jsp" />
<jsp:include page="entertain.jsp" />
这时候你这4个jsp页面里所有的标签都是看成在一个jsp文件里使用的。
在一个HTML或者JSP文件中,不可以出现2个id的值是相同的,如果相同,则只会取页面加载时取到的第一个id的值。
还有<jsp:include page="*.jsp" /> 不是把"*.jsp"的运行结果返回给主页面吗?
<jsp:setProperty>这个标签使用Bean给定的setter方法,表示为这个变量赋值,这个里面有个参数就是name指定所需要赋值的bean对象,所以这个标签是不可以放在bean标签里面的就相当于
NewsFeed newsfeed= .....
newsfeed.setTopic(entertainment)...
我摸索到了一个改正方法:就是在原先错误的代码之上,把三个页面中的scope属性由request改为page就可以正常运行,只是不知道背后的原因
写在page里面就不存在相同变量名的问题了应该是会正常的,
你说在page3里面修改了后就可以运行还不大了解
今天看到第八章的useBean时会想起这个问题了,说这个id属性在同一个JSP页面中不能重复(包括使用<%@ include%>指令包含进来的)。
但是这里用的是<jsp:include>标准动作,没说不可以啊!所以用这种方法id肯定是可以重复的。但是具体怎么做还得继续研究!