<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Denis's Java Library

    The only documentation is the code itself

    自定義標(biāo)簽獲取struts中action的全部路徑(原創(chuàng))

          由于項(xiàng)目里面由需要一個(gè)form可以提交多個(gè)action(本來(lái)可以用 dispatch值來(lái)實(shí)現(xiàn),后來(lái)考慮到要使用validator框架驗(yàn)證)。后來(lái)考慮的方案為使用js來(lái)控制form的流向,例如
          
    form.action='/bookstore/checkId.do'

    不過(guò)新的問(wèn)題來(lái)了!如何能不用hardcode而拿到我要的action的實(shí)際路徑呢?比如我定義的struts-config文件里面的action是 
    path="/checkId"
    但是實(shí)際解釋后的path是:
    action='/bookstore/checkId.do'
    前 綴和后面的后綴.do都是根據(jù)你的項(xiàng)目部署的路徑和你在web.xml中配置的mapping的后綴有關(guān)系,如果我把內(nèi)容寫(xiě)死到j(luò)sp中那以后我要是想把 checkId.do改成checkId.action那就要更改jsp,由于struts本來(lái)提供的幾個(gè)taglib里面的

    <html:form action="/checkId" >

    綜合了一下決定還是自己寫(xiě)個(gè)taglib來(lái)實(shí)現(xiàn),其實(shí)只需要照著struts 中的 FormTag.java 文件依葫蘆畫(huà)瓢就可以了,一下為本人的代碼部分

    StrutsActionCustomTag.java
    package com.denis.framework.common.taglib.strutsActionExt;

    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.jsp.JspException;
    import javax.servlet.jsp.tagext.TagSupport;

    import org.apache.struts.taglib.TagUtils;

    public class StrutsActionCustomTag extends TagSupport {

       
    protected String actionName = null;
       
        
    public String getActionName() {
           
    return actionName;
        }


        
    public void setActionName(String actionName) {
           
    this.actionName = actionName;
        }


        
    public int doStartTag() throws JspException {

            StringBuffer results 
    = new StringBuffer();
            HttpServletResponse response 
    =
                (HttpServletResponse) 
    this.pageContext.getResponse();
           
            results.append(response.encodeURL( TagUtils.getInstance().getActionMappingURL( 
    this.actionName , this.pageContext)) );

            TagUtils.getInstance().write(pageContext, results.toString());

           
    return (EVAL_BODY_INCLUDE);
        }


        
    public void release() {
           
    super.release();
           
    this.actionName = null ;

        }

    }


    tld定義部分

    framework-struts.tld
    <?xml version="1.0" encoding="UTF-8"?>

    <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
    <taglib>

    <tlibversion>1.0</tlibversion>
        <jspversion>1.1</jspversion>
        <shortname>framework</shortname>
        <uri>http://www.denisFramework.org/Framework-Tag</uri>
        <tag>
        <name>getActionUrl</name>
        <tagclass>com.denis.framework.common.taglib.strutsActionExt.StrutsActionCustomTag</tagclass>
        <bodycontent>empty</bodycontent>
        <attribute>
             <name>actionName</name>
             <required>true</required>
             <rtexprvalue>true</rtexprvalue>
        </attribute>
    </tag>

    </taglib>



    ok ! 直接在jsp中如下使用即可取到action的真正路徑

     
    <%@ page language="java"%>
    <%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%> 
    <%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%>
    <%@ taglib uri="/WEB-INF/framework-struts.tld" prefix="framework" %>
     
    <html> 
       
    <head>
           
    <title>JSP for loginForm form</title>
       
    </head>
       
    <body>
           
    <framework:getActionUrl actionName="login" />
           
    <html:form action="/login">
                name : 
    <html:text property="name"/><html:errors property="name"/><br/>
                password : 
    <html:password property="password"/><html:errors property="password"/><br/>
               
    <html:submit/><html:cancel/>
           
    </html:form>
       
    </body>
    </html>



    大家要是有更好的解決方法希望能指正!謝謝!

    posted on 2005-11-21 15:52 DenisLing 閱讀(1871) 評(píng)論(1)  編輯  收藏

    評(píng)論

    # re: 自定義標(biāo)簽獲取struts中action的全部路徑(原創(chuàng)) 2008-03-11 09:53 csch

    直接用lastIndexOf("/")和lastIndexOf(".")獲取最后一個(gè)"/"和"."的位置再截取這兩個(gè)位置之間的字符串好像也可以吧  回復(fù)  更多評(píng)論   


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲黄色激情视频| 久久亚洲AV无码精品色午夜麻豆 | 亚洲1区1区3区4区产品乱码芒果 | 国产产在线精品亚洲AAVV| 毛片免费视频在线观看| 久久精品国产亚洲av麻豆蜜芽| 中文字幕亚洲免费无线观看日本| 久久精品国产精品亚洲艾| 99re6在线视频精品免费| 亚洲精品V欧洲精品V日韩精品| 免费无码H肉动漫在线观看麻豆| 中国亚洲女人69内射少妇| 中文在线观看免费网站| 亚洲国产精品成人精品无码区 | 国产桃色在线成免费视频| 亚洲av午夜精品无码专区| 免费看的成人yellow视频| 精品久久久久亚洲| 成人午夜亚洲精品无码网站| 热久久这里是精品6免费观看| 亚洲精品视频在线| 永久免费av无码网站韩国毛片| 亚洲日韩精品无码AV海量| 中文字幕永久免费| 亚洲av片劲爆在线观看| 成年人网站免费视频| 亚洲国产精品美女久久久久| 亚洲国产成人久久一区久久| 国产免费一区二区三区不卡| 亚洲色图视频在线观看| 免费a级毛片高清视频不卡| 国产亚洲精品第一综合| 国产亚洲福利精品一区| 思思re热免费精品视频66| 美女裸体无遮挡免费视频网站| 国产亚洲日韩一区二区三区| 亚洲精品视频在线观看免费| MM1313亚洲精品无码久久| 亚洲av中文无码乱人伦在线播放 | av无码国产在线看免费网站| 久久亚洲AV成人无码国产最大|