在struts2中,总是在操作之前调用的方法
我需要一个方法,该方法在触发操作之前执行,以进行初始化,从数据库中获取行列表,并以表格形式显示 我可以考虑使用在struts2中,总是在操作之前调用的方法,struts2,struts,Struts2,Struts,我需要一个方法,该方法在触发操作之前执行,以进行初始化,从数据库中获取行列表,并以表格形式显示 我可以考虑使用prepare() 因此,通过隐藏字段或查询字符串参数提供的当前页面在prepare()方法中不可用,因为它是在请求参数绑定到操作之前执行的 我可以想到的另一种方法是使用@Before注释的方法,但如果发生任何转换/验证错误,则不会执行此方法 我们是否可以有一个方法保证在执行操作之前(或之后)执行,并且它还可以访问请求参数,而不是prepare()方法的情况 目前,我正在使用一个由@Be
prepare()
因此,通过隐藏字段或查询字符串参数提供的当前页面在prepare()
方法中不可用,因为它是在请求参数绑定到操作之前执行的
我可以想到的另一种方法是使用@Before
注释的方法,但如果发生任何转换/验证错误,则不会执行此方法
我们是否可以有一个方法保证在执行操作之前(或之后)执行,并且它还可以访问请求参数,而不是prepare()
方法的情况
目前,我正在使用一个由@Before
注释的方法。这需要在从数据库获取行之前进行一些难看的条件检查,如
if(hasrerrors()&&CollectionUtils.isEmpty(list))
在列表的getter方法中,以便在发生转换/验证错误时,列表可以在这个getter方法中初始化,而不是在@Before
注释的方法中初始化,因为转换/验证错误,该方法实际上不会执行。在较小的情况下(编辑之前),最后一段只是旁注。这基本上与问题本身无关。因此,它应该像以前一样存在:)怎么样?使用paramspreparamstack或(如果您使用一些特殊的模式匹配器)自定义堆栈。prepare()
方法似乎使用paramspreparamstack
调用了两次,这会导致对数据库执行代价高昂的操作。它们是两个完整的堆栈,一个有额外的拦截器。如果您同时使用这两个拦截器,那么您将调用每个拦截器两次,而不仅仅是准备拦截器。用一个或另一个