Studying Java......

统计

留言簿(1)

积分与排名

JavaServerFaces

Mail Link

Open Source

友情链接

收藏的链接

阅读排行榜

评论排行榜

利用函数computeURL( )实现同一FORM的多动作提交

       在实际处理的页面中,往往在一个页面中有多个触发的动作,而Struts的ActionForm中只能指定一个Action,是一种粗粒度的实现(JSF中有更好的解决方案),computeURL( )可以提供一种变通的解决方法.
       computeURL( )是在org.apache.struts.util.RequestUtils(Struts Ver1.1)与org.apache.struts.taglib.TagUtils(Struts Ver1.2)类中的一个函数,用来解析基于Forward,Action,链接,页面参数的URL可以用来动态改变页面中Form对应的Action.Ver1.1中有以下两种:
1.computeURL(javax.servlet.jsp.PageContext pageContext, java.lang.String forward, java.lang.String href, java.lang.String page, java.util.Map params, java.lang.String anchor, boolean redirect)
2.computeURL(javax.servlet.jsp.PageContext pageContext, java.lang.String forward, java.lang.String href, java.lang.String page, java.lang.String action, java.util.Map params, java.lang.String anchor, boolean redirect)
其中第一个是  Deprecated.第二个在新版本中得以保留,另外还提供了另外一种重载:
computeURL(javax.servlet.jsp.PageContext pageContext, java.lang.String forward, java.lang.String href, java.lang.String page, java.lang.String action, java.lang.String module, java.util.Map params, java.lang.String anchor, boolean redirect, boolean encodeSeparator) 
参数说明如下:
Parameters:
pageContext - PageContext for the tag making this call
forward - Logical forward name for which to look up the context-relative URI (if specified)
href - URL to be utilized unmodified (if specified)
page - Module-relative page for which a URL should be created (if specified)
action - Logical action name for which to look up the context-relative URI (if specified)
params - Map of parameters to be dynamically included (if any)
anchor - Anchor to be dynamically included (if any)
redirect - Is this URL for a response.sendRedirect(

下面介绍一下详细的使用方法:
1.在JSP页面中导入对应的包:
<%@ page import= "org.apache.struts.util.RequestUtils"%>

<%@ page import= "org.apache.struts.taglib.TagUtils"%>
2.创建一个JAVASCRIPT函数:
<script language="JavaScript" type="text/javascript">
function search() {
 <%String searchUrl = RequestUtils.computeURL(
   pageContext,
   null,
   null,
   "/Search.do",
   null,
   null,
   null,
   false);
 %>
   
 document.form1.action = "<%=searchUrl%>";
 document.form1.submit();  
}
</script>
3.在JSP页面中给对应的表单指定ID以便上面的函数进行确定提交的是哪个FORM(如果一个页面在存在多个FORM的话):
<html:form styleId="form1" action="/aotherSearch">
.........
</html:form>
4.在需要触发提交动作的地方,调用2中的JAVASCRIPT函数:
<html:button property="searchInfo" value="检索" onclick="search()" style="width:100px" />

对应的ACTION与FORM在配置文件中定义.这样,就可以动态更改FORM的ACTION实现一个FORM对应多个ACTION了.



posted on 2005-11-24 11:29 Terence 阅读(1433) 评论(2)  编辑  收藏 所属分类: STRUTS

评论

# re: 利用函数computeURL( )实现同一FORM的多动作提交 2005-11-27 13:22 DenisLing

果然是个好方法!我以前的做法仿照了HtmlTag.java里面的做法提取了真正的action路径,然后自己写了个taglib来实现的!麻烦多了  回复  更多评论   

# re: 利用函数computeURL( )实现同一FORM的多动作提交 2005-11-29 11:02 IBM

用js不是也可以随时改变吗?
根据传入js的参数来决定form的action的地址是哪一个~  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航: