gpt4 book ai didi

java - 准备拦截器如何在struts2中工作?

转载 作者:行者123 更新时间:2023-11-30 07:25:41 24 4
gpt4 key购买 nike

请告诉我准备拦截器是如何工作的我现在正在使用它并发现了一些奇怪的行为

prepare()
validate()
execute()

这些是方法

所以当我点击请求时它调用了 3 次

prepare()
validate()
execute()
prepare()
validate()
execute()
prepare()
validate()
execute()

不知道有什么问题根据我的理解,它应该只运行准备方法并显示预填充的数据表单,当用户点击提交时它应该提交数据。

请解释

<action name="updatebusinessinfo" class="com.controller.UpdateBusinessDetails">

<interceptor-ref name="params"/>
<!--
<interceptor-ref name="prepare"/>

<interceptor-ref name="basicStack"/>
-->

<interceptor-ref name="fileUpload">
<param name="maximumSize">2097152</param>
<param name="allowedTypes">image/png,image/gif,image/jpeg,image/pjpeg</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
<result name="success">businessinfo.jsp</result>
<result name="input">businessinfo.jsp</result>
<result name="error">businessinfo.jsp</result>
</action>

是的, friend 们,我在 struts.xml 文件中犯了错误。现在请告诉我如何在 prepare() 方法中接收 url 参数? http://www.myweb.com/updatebusinessinfo/23

我尝试跟随但没有成功

<action name="updatebusinessinfo/*" class="com.controller.UpdateBusinessDetails">
<param name="id">{1}</param>

<interceptor-ref name="params"/>
<!--
<interceptor-ref name="prepare"/>

<interceptor-ref name="basicStack"/>
-->

<interceptor-ref name="fileUpload">
<param name="maximumSize">2097152</param>
<param name="allowedTypes">image/png,image/gif,image/jpeg,image/pjpeg</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
<result name="success">businessinfo.jsp</result>
<result name="input">businessinfo.jsp</result>
<result name="error">businessinfo.jsp</result>
</action>

最佳答案

关于此问题的一些提示可能对寻找有关 Prepare Interceptor 的信息的人有用:

  • struts2 中的 DefaultStack 已经包含 Prepare 拦截器,因此如果您同时包含它们,您将调用 2 次 prepare()。通常你不希望这样。
  • 在 DefaultStack 中,Prepare 拦截器在 Params 拦截器之前被调用,因此您不会在 prepare() 方法中获得请求参数。如果您想在那里使用参数做一些事情(例如,从带有 ID 的数据库中获取一些东西),您将无法做到。

看这里,看看struts2中的basic/default stack有什么: http://struts.apache.org/release/2.0.x/docs/struts-defaultxml.html

有一个“paramsPrepareParamsStack”在 Prepare 之前和之后使用 Params,因此您在 prepare() 中有您的参数。

关于java - 准备拦截器如何在struts2中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10786003/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com