思路是: 首页index.jsp,动态加载数据的action: loadIndex.action
在访问index.jsp时,执行loadIndex.action,由action得到数据库中数据后,[color=red][b]仍然将数据返回给index.jsp[/b][/color]由index.jsp显示数据.
[b]问题补充:[/b]
谢谢3位的回答,
lovewhzlq (CTO) 大大,
我尝试用ExtJs实现Ajax提交,
[code="java"]
Ext.onReady(function() {
window.location.href = 'loadindex.action?id=xxxx;
}
);[/code]
却无法避免重复执行action的问题,变成死循环了.
有什么办法能让它只执行一次呢?
就像Ext.data.Store那样只load一次.
[b]问题补充:[/b]
确实是,
Ext里有无可以用来调用url的东东呢?
[code="java"]
Ext.Ajax.request({
url : 'loadindex.action?id=xxx
});
[/code]
?
[b]问题补充:[/b]
感谢 lovewhzlq (CTO) 大大,
我现在已经可以成功提交ajax请求去执行loadIndex.action了.
[code="java"]
Ext.onReady(function() {
Ext.Ajax.request({
url : 'loadindex.action?id=LiteonIT'
});
});
[/code]
可是发现执行完后返回的数据struts2标签无法识别?
我在firebug下可以看到数据库的返回数据.
但是用之类的标签却得不到数据,页面空白.
是否跟Ext.Ajax.request返回的数据格式有关?
[b]问题补充:[/b]
[code="java"][/code]谢谢.
index.jsp
[code="xml"]
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<title>Tools Shop</title>
<link rel="stylesheet" type="text/css" href="css/style.css" />
<script type="text/javascript" src="js/boxOver.js"></script>
<script type="text/javascript" src="ext/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="ext/ext-all.js"></script>
<script type="text/javascript" src="ext-lang-zh_CN.js"></script>
<script type="text/javascript" src="js/loadIndex.js"></script>
</head>
<body>
<div id="main_container">
<div id="header">
<div class="top_right">
<div class="languages">
<div class="lang_text">
Languages:
</div>
<a href="#" class="lang"><img src="images/en.gif" alt=""
title="" border="0" /> </a>
<a href="#" class="lang"><img src="images/de.gif" alt=""
title="" border="0" /> </a>
</div>
<div class="big_banner">
<a href="#"><img src="images/banner728.jpg" alt="" title=""
border="0" /> </a>
</div>
</div>
<!-- Company Logo here -->
<div id="logo">
<s:iterator id="company" value="cpy">
<img src="images/<s:property value="logo"/>" />
</s:iterator>
</div>
</div>
<div id="main_content">
<div id="menu_tab">
<ul class="menu">
<li>
<a href="index.jsp" class="nav"> Home </a>
</li>
<li class="divider"></li>
<li>
<a href="#" class="nav">Products</a>
</li>
<li class="divider"></li>
<li>
<a href="#" class="nav">News</a>
</li>
<li class="divider"></li>
<li>
<a href="#" class="nav">My account</a>
</li>
<li class="divider"></li>
<li>
<a href="#" class="nav">Sign Up</a>
</li>
<li class="divider"></li>
<li>
<a href="contact.jsp" class="nav">Contact Us</a>
</li>
</ul>
</div>
<!-- end of menu tab -->
<div class="crumb_navigation">
Navigation:
<span class="current">Home</span>
</div>
<div class="left_content">
<div class="title_box">
Shotcut
</div>
<ul class="left_menu">
<!-- Company quick link here -->
<li class="odd">
<!-- add tag # here -->
<a href="index.jsp#cpypic">Company Picture</a>
</li>
<li class="even">
<a href="index.jsp#cpydesc">EnterPrise Introduce</a>
</li>
<!-- Company detail shotcut -->
<s:iterator value="cpydetail" status="index">
<s:if test="#index.odd == true">
<li class="odd">
</s:if>
<s:else>
<li class="even">
</s:else>
<a href="loadindex.action?id=LiteonIT#<s:property value=" id"/>">
<s:property value="name" />
</s:iterator>
</ul>
<div class="title_box">
Newsletter
</div>
<div class="border_box">
<input type="text" name="newsletter" class="newsletter_input"
value="your email" />
<a href="#" class="join">subscribe</a>
</div>
</div>
<!-- end of left content -->
<div class="center_content">
<div class="oferta">
<div class="oferta_details">
<!-- Company Name,Picture and Description here -->
<s:iterator value="cpy">
<div class="oferta_title">
Company Name
</div>
<div class="oferta_text_bold">
<s:property value="name" />
</div>
<div class="oferta_title">
Company Picture
<a name="cpypic"></a>
</div>
<div class="oferta_text">
<img src="images/<s:property value="picture"/>" width=540
height=250 />
</div>
<div class="oferta_title">
Company Description
<a name="cpydesc"></a>
</div>
<div class="oferta_text">
<s:property value="description" />
</div>
</s:iterator>
<!-- Company Detail here -->
<s:iterator value="cpydetail">
<div class="oferta_title">
<s:property value="name" />
<a name="<s:property value="id" />"></a>
</div>
<div class="oferta_text">
<s:property value="value" />
</div>
</s:iterator>
</div>
</div>
</div>
<!-- end of center content -->
<div class="right_content">
<div class="title_box">
Search
</div>
<div class="border_box">
<input type="text" name="newsletter" class="newsletter_input"
value="keyword" />
<a href="#" class="join">search</a>
</div>
<div class="title_box">
Friendly Link
</div>
<ul class="left_menu">
<s:iterator id="fl" value="friendlylink" status="index">
<s:if test="#index.odd == true">
<li class="odd">
</s:if>
<s:else>
<li class="even">
</s:else>
<a href="http://<s:property value="fl"/>"> <s:property
value="fl" /> </a>
</li>
</s:iterator>
</ul>
</div>
<!-- end of right content -->
</div>
<!-- end of main content -->
<div class="footer">
<div class="left_footer">
<img src="images/footer_logo.png" alt="" title="" width="89"
height="42" />
</div>
<div class="center_footer">
Template name. All Rights Reserved 2009
<br />
<img src="images/payment.gif" alt="" title="" />
</div>
<div class="right_footer">
<a href="index.jsp">home</a>
<a href="details.jsp">about</a>
<a href="details.jsp">sitemap</a>
<a href="details.jsp">rss</a>
<a href="contact.jsp">contact us</a>
</div>
</div>
<!-- end of footer -->
</div>
<!-- end of main_container -->
</body>
[/code]
loadIndex.js:
[code="java"]
Ext.onReady(function() {
Ext.Ajax.request({
url : 'loadindex.action?id=LiteonIT'
});
});
[/code]
struts.xml:
[code="java"]
method="loadCompanyInfo">
/index.jsp
companyInfoAction:
[code="java"][/code]
public String loadCompanyInfo() {
this.setCpy(ci.getCompanyInfo(this.getId()));
this.setCpydetail(ci.getCompanyDetail(this.getId()));
this.setFriendlylink(ci.getFriendlyLink(this.getId()));
System.out.println("I am running");
return SUCCESS;
}
[/code]
访问index.jsp时可以看到System.out.println("I am running");执行了,firebug下也可以看到数据返回.
[b]问题补充:[/b]
index.jsp:
[code="xml"]
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<title>Tools Shop</title>
<link rel="stylesheet" type="text/css" href="css/style.css" />
<script type="text/javascript" src="js/boxOver.js"></script>
<script type="text/javascript" src="ext/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="ext/ext-all.js"></script>
<script type="text/javascript" src="ext-lang-zh_CN.js"></script>
<script type="text/javascript" src="js/loadIndex.js"></script>
</head>
<body>
<div id="main_container">
<div id="header">
<div class="top_right">
<div class="languages">
<div class="lang_text">
Languages:
</div>
<a href="#" class="lang"><img src="images/en.gif" alt=""
title="" border="0" /> </a>
<a href="#" class="lang"><img src="images/de.gif" alt=""
title="" border="0" /> </a>
</div>
<div class="big_banner">
<a href="#"><img src="images/banner728.jpg" alt="" title=""
border="0" /> </a>
</div>
</div>
<!-- Company Logo here -->
<div id="logo">
<s:iterator id="company" value="cpy">
<img src="images/<s:property value="logo"/>" />
</s:iterator>
</div>
</div>
<div id="main_content">
<div id="menu_tab">
<ul class="menu">
<li>
<a href="index.jsp" class="nav"> Home </a>
</li>
<li class="divider"></li>
<li>
<a href="#" class="nav">Products</a>
</li>
<li class="divider"></li>
<li>
<a href="#" class="nav">News</a>
</li>
<li class="divider"></li>
<li>
<a href="#" class="nav">My account</a>
</li>
<li class="divider"></li>
<li>
<a href="#" class="nav">Sign Up</a>
</li>
<li class="divider"></li>
<li>
<a href="contact.jsp" class="nav">Contact Us</a>
</li>
</ul>
</div>
<!-- end of menu tab -->
<div class="crumb_navigation">
Navigation:
<span class="current">Home</span>
</div>
<div class="left_content">
<div class="title_box">
Shotcut
</div>
<ul class="left_menu">
<!-- Company quick link here -->
<li class="odd">
<!-- add tag # here -->
<a href="index.jsp#cpypic">Company Picture</a>
</li>
<li class="even">
<a href="index.jsp#cpydesc">EnterPrise Introduce</a>
</li>
<!-- Company detail shotcut -->
<s:iterator value="cpydetail" status="index">
<s:if test="#index.odd == true">
<li class="odd">
</s:if>
<s:else>
<li class="even">
</s:else>
<a href="loadindex.action?id=LiteonIT#<s:property value=" id"/>">
<s:property value="name" />
</s:iterator>
</ul>
<div class="title_box">
Newsletter
</div>
<div class="border_box">
<input type="text" name="newsletter" class="newsletter_input"
value="your email" />
<a href="#" class="join">subscribe</a>
</div>
</div>
<!-- end of left content -->
<div class="center_content">
<div class="oferta">
<div class="oferta_details">
<!-- Company Name,Picture and Description here -->
<s:iterator value="cpy">
<div class="oferta_title">
Company Name
</div>
<div class="oferta_text_bold">
<s:property value="name" />
</div>
<div class="oferta_title">
Company Picture
<a name="cpypic"></a>
</div>
<div class="oferta_text">
<img src="images/<s:property value="picture"/>" width=540
height=250 />
</div>
<div class="oferta_title">
Company Description
<a name="cpydesc"></a>
</div>
<div class="oferta_text">
<s:property value="description" />
</div>
</s:iterator>
<!-- Company Detail here -->
<s:iterator value="cpydetail">
<div class="oferta_title">
<s:property value="name" />
<a name="<s:property value="id" />"></a>
</div>
<div class="oferta_text">
<s:property value="value" />
</div>
</s:iterator>
</div>
</div>
</div>
<!-- end of center content -->
<div class="right_content">
<div class="title_box">
Search
</div>
<div class="border_box">
<input type="text" name="newsletter" class="newsletter_input"
value="keyword" />
<a href="#" class="join">search</a>
</div>
<div class="title_box">
Friendly Link
</div>
<ul class="left_menu">
<s:iterator id="fl" value="friendlylink" status="index">
<s:if test="#index.odd == true">
<li class="odd">
</s:if>
<s:else>
<li class="even">
</s:else>
<a href="http://<s:property value="fl"/>"> <s:property
value="fl" /> </a>
</li>
</s:iterator>
</ul>
</div>
<!-- end of right content -->
</div>
<!-- end of main content -->
<div class="footer">
<div class="left_footer">
<img src="images/footer_logo.png" alt="" title="" width="89"
height="42" />
</div>
<div class="center_footer">
Template name. All Rights Reserved 2009
<br />
<img src="images/payment.gif" alt="" title="" />
</div>
<div class="right_footer">
<a href="index.jsp">home</a>
<a href="details.jsp">about</a>
<a href="details.jsp">sitemap</a>
<a href="details.jsp">rss</a>
<a href="contact.jsp">contact us</a>
</div>
</div>
<!-- end of footer -->
</div>
<!-- end of main_container -->
</body>
[/code]
[b]问题补充:[/b]
index.jsp中
第150行开始用struts2标签获取数据库数据.
[b]问题补充:[/b]
loadIndex.js的内容如下
window.location.href = 'loadindex.action?id=xxxx';
这里是不是应该用ajax 请求啊,直接window.location.href 的话会重复执行,进入死循环.
放在
之前的话,
ExtJs识别不了吧?
[b]问题补充:[/b]
再次感谢lovewhzlq (CTO)大大的热心回复.
其实我现在就是用2个页面做的,一个configIndex.jsp,一个index.jsp.在configIndex中提交action,转到index.jsp.
之所以搞得这么麻烦,主要是为了避免用户直接通过地址栏访问index.jsp的时候出不来数据的问题.
现在问题其实已经解决了一大半拉.用ajax提交action后可以看到执行了一次,数据库数据返回也有,反而是struts2标签失效了,很纳闷.
[b]问题补充:[/b]
其实web程序对用户直接用地址访问页面的做法都比较难处理.不知道是否有好的方式避免掉这种问题.
[b]问题补充:[/b]
感谢energykey兄的回答,鄙视 得好.
也就是说,
ajax请求的返回,只能用response.responseText或者json来获取,
struts2标签是不行的了.它们是2条路的人.
因为ajax是异步的请求,
struts2走的路是A的话,ajax的请求走的是B?