问题标签 [struts2-interceptors]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
446 浏览

java - Struts 2 请求中未提交的单字母驼峰式字段

我有这个非常奇怪的映射问题。所有字段名称(如金额、newCase、状态等)都完美地到达了 struts 操作,但没有一个单字母 camelCase 字段到达操作。全部为空。

例如

上面的代码给出了输出:

对于以下请求 URL:

http://localhost:8084/callback?fAmount=23.323&fFee=23&amount=2323&nCase=2323.23&sStatus=nitin

我有适当的 getter 和 setter(现在检查了很多次)

我也检查了拦截器,并且我正在使用 defaultStack 进行此方法/操作

0 投票
1 回答
5442 浏览

java - Struts2 中 i18n 拦截器的使用

我想制作一个多语言网站。

我有一个普通的拦截器堆栈,其中包含

用于更改语言环境的常用 jsp:

还有一个简单的 LocaleManager 动作

在上述场景中,i18n 拦截器始终针对所有操作运行,但没有得到解决方案。因为仅当用户单击 locale-manager 操作时,区域设置才会更改。

我尝试删除拦截器堆栈并将 i18n 拦截器仅添加到 LocaleManager 如下

但它没有奏效?!我错过了什么,还是应该编写自己的拦截器?

0 投票
2 回答
908 浏览

java - struts2 使用什么算法生成随机令牌?

Struts 拥有TokenInterceptorTokenSessionStoreInterceptor使用在 jsp 上通过<s:token></s:token>tag 生成的令牌,如下所示。

随机生成令牌algorithm是什么。uses

0 投票
1 回答
1659 浏览

struts2 - 语言为阿拉伯语时无法识别负整数请求参数,其他语言(如英语、德语、法语和中文)工作正常

我有一个 struts2 网络应用程序。

当我将语言更改为阿拉伯语时,所有查询字符串 url 都会给出不确定的结果。我猜这是因为?它被认为是一些变量名,然后它没有正确映射到 Struts2 的目标操作。

尽管互联网上的示例似乎运行良好,但我想这与我的 struts 配置有关。

只要语言是英语,类似 url 的http://localhost:8084/myaction?id=4工作就可以很好地工作并返回所需的数据,但是一旦更改了语言,就永远不会调用该 url 绑定操作,而是调用其他一些随机操作。

[更新]

不调用随机动作。实际上,参数没有被映射,因此,由于操作中的验证检查,操作返回 INPUT。但是当语言是英语时,相同的 url 有效,即参数得到完美映射并返回成功。

[更新 2]

以上是我正在使用的拦截器堆栈。

[更新 3]

只有具有值-1的参数才会给出 OGNL 异常Error Setting Expression,其余数字似乎工作正常。

[更新 4]

我尝试过使用更多语言并发现它不仅适用于阿拉伯语。我想这与他们的左右对齐有关。

我还设法编写了一个小型示例应用程序,它表明只有当语言为阿拉伯语时,表单提交才会出错,并且与其他任何其他语言(英语、中文、法语)一起工作正常。

我还为此提交了关于 struts2 jira 的错误 - https://issues.apache.org/jira/browse/WW-4241

0 投票
0 回答
65 浏览

date - 在 strust2 datetimepicker 中显示日期

(2013-11-15(yyyy-MM-dd))当我在 struts2 datetimepicker之前和之后禁用所有天时(2013-12-02(yyyy-MM-dd)),我得到一个月内所有启用天的输出,这意味着 12 月的 01,02 日期也是 11 月。代码是,

输出在日历中,

在上面 15 之前,之后 2 是禁用日期,我只在 11 月获得所有日期,我想显示 11 月必须以 30 和下个月剩余的启用天数结尾。下个月如何显示?

0 投票
1 回答
4948 浏览

java - Struts2 中的日期转换

我想知道如何在 Struts2 中将 a 转换StringDate。我有一个简单的表格,用户可以在其中提供这种格式的日期"yyyy-MM-dd"。将 Sturts2 映射表提交给 bean。我在日期转换中遇到错误。我用谷歌搜索了很多,每一个地方都说我们必须为此使用自定义类型转换器。我不想为日期转换编写自定义类型转换器。我认为Struts2中应该有一个简单的数据转换机制,因为数据转换是非常常见的功能。

JSP

这是用户输入输入的 JSP。

模型类

动作类

0 投票
3 回答
1322 浏览

java - Struts 2 - 了解 OGNL 和 params 拦截器之间的工作

我是 Struts 2 的新手。我正在从 Struts2 In Action 一书中学习它。我很难理解 OGNL 中的一些概念,如下所示 -

  1. 我们知道params拦截器将数据从请求参数移动到ValueStack. 现在在阅读时,我遇到了这样一句话:“工作的棘手部分是将参数的名称映射到ValueStack.params表达式以在 ValueStack 上定位正确的目标属性”。

    问题1)在这里,“解释”是什么意思?是 params 拦截器将请求参数转换为一些 OGNL 表达式,然后 OGNL 表达式提供到 ValueStack 中属性的映射,还是意味着其他什么?

  2. 当结果开始其呈现过程时,Struts 2 标记通过使用 OGNL 表达式引用特定值从 ValueStack 中检索数据。

    问题2)所以标签采用OGNL表达式,但是数据是如何移动的?早些时候,params拦截器是移动数据的那个,但现在没有params拦截器。那么数据是如何被移动的呢?

0 投票
1 回答
494 浏览

struts2 - 基于特定 URl 模式的 Struts2 拦截器

我想对所有以特定名称开头的操作使用 struts2 拦截器:

假设我想拦截所有以Module开头的动作。有什么方法可以像 Spring AOP那样配置拦截器,例如:com.acme.web.actions.Module*

我不能使用 AOP,因为它会破坏所有页面参数(因为我猜那里无法调用 params 拦截器)。

这可能吗?

0 投票
1 回答
1077 浏览

java - 在动作类中执行 CRUD 操作以及 Struts2 中的 prepare() 方法

假设以下动作类。

我排除了注释和其他东西以避免代码噪音。映射到这些方法的操作使用paramsPrepareParamsStack拦截器。

在这里,当一个与方法关联的动作insert()被触发时(它由 完成<s:submit>),结果将是重定向动作。因此,将创建动作类的新实例,该实例导致load()方法被执行,这反过来又导致该prepare()方法再次被执行。更新和删除时也会发生同样的事情。

prepare()方法首先在与<s:submit>(or <s:link>) 关联的动作被触发时立即执行,然后在请求被重定向时再次执行(这可以理解,因为请求的重定向导致创建动作类的新实例,从而导致关联的动作与load()要执行的方法并prepare()在每个动作上执行一次)。

prepare()方法中唯一的一行具有昂贵的操作。为了防止该getList()方法被执行两次,我做了一些条件检查,如下所示。

这种方法可能有更多的条件检查和复杂的代码。

这样做仍然不够。如果由于条件而发生任何验证/转换错误,则不会初始化列表。没有hasErrors()hasActionErrors()并且hasFieldErrors()prepare()在任何错误后在方法中评估为真。这需要在validate()方法中加载列表,如下所示。

这现在满足了要求,但看起来非常难看,有这样的条件检查,不能被认为是一个好方法。

有没有更好的方法来保证在请求执行插入、更新、删除等操作后从数据库中检索列表只发生一次?

它应该与每个请求在后台执行多少操作无关。尽管存在一些转换/验证错误,但应仅在请求完成之前检索该列表一次事件。

@Before, @BeforeResult,@After注释似乎都不能解决这种情况。


在旨在检索/初始化列表的方法中使用此类代码validate()似乎不是一个好习惯。

我希望在CRUD 操作之后有一种方法可以获取此列表。由于从数据库中获取此列表的成本很高,因此该列表应仅在每个操作(插入、编辑、更新、删除)完成后初始化一次。

0 投票
2 回答
23767 浏览

java - 在'class xxx上设置'xxx'时出现意外异常:错误设置表达式'xxx'的值['x',]

我将一些参数传递给ModelDriven<Transporter>通过查询字符串实现的操作类。

动作类如下。

服务器终端显示以下消息。

即使日志级别是SEVERE,这些参数的值在操作类中也可用

edit()方法中。

如果paramsPrepareParamsStack到那时被替换defaultStack,这些消息就会消失。

像这样的表达式['DHL', ]表示一个数组。transporterIdtransporterName在模型中,然而,分别是类型LongString

我究竟做错了什么?