cAng^Er

不懂我的人 , 离不了我 , 该了解了解我 !而懂我的人 , 更离不了我 , 因为他们爱我 。

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  30 随笔 :: 16 文章 :: 18 评论 :: 0 Trackbacks

两个jsp页面通过xwork传数据的几个方式:
      这几个方法是在做项目时用到的,记在这里,如果忘记了可以参考一下,大家如果感兴趣,也可以参考一下,我想对初学webwork的应该会有一些帮助,我做东西没太多的经验,可能有很多地方说的不对,写得时候也是按照自己的理解写上去的,例子里的代码,是我做东西时候的真实代码,也是可行的,主要是说明一下怎么做。
    起初属于无奈,因为不能经过后台连接数据库得到数据,即使能得到,也是很麻烦,很耗费时间,无奈通过xwork进行传值!现在发现挺好的一件事情,也许有弊端,但我的经验不足,暂时并没有发现,如果有什么不对的地方,希望大家给点意见,批评一下,呵呵,我是大一的学生!
     1.如果这个页面的数据要给下一个页面,且不经过java文件处理,可以用这个方法!
那是一个request的周期问题,因为在两个jsp界面通过xwork进行跳转,需要传相同的数据或者下一个界面要用到上一个jsp页面的数据时就可以像下面那样传值,要注意的是,两个jsp页面,在xwork跳转的时候不能经过java文件也就是不能让另一个java文件进行处理,如果在经过一个java文件,那么request存储的数据就会丢失!相反,request存储的数据就会存在。
例如,
jsp:
   <c:url var="testContent" value="/admin/addcontent.action">
                    <c:param name="testId" value="${test.testId}"/>
                    <c:param name="categoryId" value="${test.categoryId}"/>
                </c:url>
                <a href="${testContent}">添加</a>
xwork中:
    <action name="addcontent">
            <result>/dream/admin/addcontent.jsp</result>
        </action>
不需要做任何的处理,但要记住,不能经过后台!(也许可以经过后台,只要不进行存储数据就可以,但我没试过,因为那样就没有意义了!)
另一个jsp(addcontent.jsp):
 <ww:a href="admin/getTestList.action?model.category_id=${param.categoryId}&id=${param.categoryId}" value="返回">
            返回
        </ww:a>
<form action="admin/addTestContent.action" method="post" enctype="multipart/form-data">
    <input type="hidden" name="categoryId" value="${param.categoryId}">
    <input type="hidden" name="content.testId" value="${param.testId}">
    <table align="center">


        <ww:textfield label="名称" name="content.contentName" value="" required="true"/>

        <tr>
            <td>上传文件</td>
            <td colspan="2">
                <input type="file" name="file1"><br/>
                <input type="file" name="file2"><br/>
                <input type="file" name="file3"><br/>
                <input type="file" name="file4"><br/>
                <input type="file" name="file5"> <br/>
            </td></tr>
        <ww:submit value="提交"></ww:submit>

    </table>
</form>
      在另一个界面,用${param.category}得到,param指的是<c:param>标签[jstl] ,在xwork中对result可以不用做任何处理,只要告诉它下一个界面是什么就可以了!
其中:${param.categoryId}和${param.testId}是得到上个界面的值得!
    2. 如果在两个页面传值,中间经过了一个java文件,那么可以通过xwork进行传值,具体做法如果下
jsp:
 <c:url var="testContent" value="/admin/select_Test_category.action">
                    <c:param name="model.test_id" value="${test.testId}"/>
                    <c:param name="model.category_id" value="${test.categoryId}"/>
                </c:url>
                <a href="${testContent}">编辑</a>
xwork中:
<action name="select_Test_category" class="com.cool.lvjiachun.Select_Test_categoryAction">
            <result name="success" type="dispatcher">
                <param name="location">/cool/lvjiachun/test_category.jsp</param>
            </result>
            <result name="alone" type="dispatcher">
                <param name="location">
                    /cool/lvjiachun/editor_test_category.jsp?model.category_id=${model.category_id}</param>
            </result>
            <interceptor-ref name="WSStack"/>
        </action>
看一下result是怎么弄得吧,“?model.category_id=${model.category_id}”,${model.category_id}是第一个jsp“<c:paramname="model.test_id"value="${test.testId}"/>”
里的name,这样值在下一个界面就可以得到了
下一个jsp,也就是editor_test_category.jsp,
  <ww:a href="admin/getTestList.action?model.category_id=${model.category_id}&id=${model.category_id}" value="返回">
        返回
    </ww:a>
这样就可以了!
  3.如果要经过两个action,经过一个action后还要经过另一个action才能到下一个jsp,后一个action需要jsp界面的数据,那么可以用重定向redirect,这样就可以达到你想要的结果!(也可以不用,但要通过数据库在去查数据,这样很耗费时间,也麻烦)
例如:
jsp:
<ww:form action="/admin/addTestCategory.action" method="post" validate="true">
        <ww:textfield label="添加分类" name="test.testName" required="true"/>
        <ww:submit value="添加"></ww:submit>
        <ww:url id="listlink" namespace="/admin" action="getTestList" method="getList"></ww:url>
        <ww:hidden name="test.categoryId" value="${param.id}"></ww:hidden>
    </ww:form>
xwork中:
<action name="addTestCategory" class="com.dream.action.TestCategoryAction" method="insert">
            <external-ref name="testcategoryDAO">testcategoryDAOProxy</external-ref>
            <result name="success" type="redirect">
                <param name="location">/admin/getTestList.action?id=${test.categoryId}&amp;model.category_id=${test.categoryId}</param>
            </result>
            <result name="input" type="redirect">
                <param name="location">/admin/getTestList.action?model.category_id=${test.categoryId}&amp;id=${test.categoryId}</param>
            </result>
            <interceptor-ref name="WSStack"/>
            <interceptor-ref name="validationWorkflowStack"/>
        </action>
“${param.id}”,看到了吧,它就是1的方法得到的!!!
            其实这些也是经过高人指点才做到的,发在这里有兴趣的大家分享一下,也许我描述不对,但我相信大家看例子也可以看懂得!如果有什么不对的地方,也请前辈们谅解并给予纠正!

posted on 2006-05-11 08:44 cAng^Er 阅读(1161) 评论(2)  编辑  收藏 所属分类: |:Web View:|

评论

# re: 两个jsp页面通过xwork传数据的几个方式 2006-11-15 23:16 yun[匿名]
什么几吧啊  回复  更多评论
  

# re: 两个jsp页面通过xwork传数据的几个方式 2006-12-23 07:22 cAng^Er
@yun[匿名]
我写在这里只是想记录我的成长的过程~以后回想起来,可以看到我有哪些不足!当我忘记了,不清晰了,可以很容易的查一查~  回复  更多评论
  


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


网站导航: