问题标签 [dmi]
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.
java - 如何在 Struts 2 中以单一形式处理多个动作
我有一个包含三个按钮的表单print
// export
。save
我怎样才能把它映射进去struts.xml
?
java - 我应该/我可以制定 Struts 2 约定来忘记操作的 execute() 方法吗?
我正在使用 Struts 2 和struts2-convention-plugin迈出第一步,目前正在SongCrudAction
使用一些典型create()
的edit()
、view()
和delete()
action 方法处理一个 CRUD 动作类 ( )。所有这些方法都用@Action
.
通常,我想从 继承有用的默认行为ActionSupport
,但这也包括继承execute()
方法。
使用配置浏览器,我可以看到有一个名为song-crud
指向它的动作。该song-crud
操作已过时,我想摆脱它,因为我有自己的操作方法可用于所有所需的操作。我想,由于 Struts2 的约定,song-crud
尽管我没有在任何地方声明它,但该操作是假定的。
在这种特殊情况下,一种可能的解决方案是赋予该execute()
方法一些合理的含义,例如我可以将它用于view()
操作。一个缺点是动作类应该根据execute()
方法的行为重命名(或注释?)(例如ViewSongAction
,而不是SongCrudAction
)。否则,视图操作的 URL 将不合适(即/view-song?id=5
比 更适合/song-crud?id=5
)。
另一方面,重命名类也很丑陋,因为它只是一个 CRUD 而不是视图操作类。
无论如何,一般问题仍然存在:每当我从 继承时ActionSupport
,它都会为我提供一种execute()
方法,该方法可能对我正在做的事情有用,也可能没有用。
因此,以某种方式告诉 Struts 2 异常忘记execute()
我的 CRUD 操作类中的方法似乎是合理的。这是对的,我怎样才能做到这一点?有更好的解决方案吗?
forms - 在 Struts 2 中为一个 JSP 上的两个表单配置不同的 Action 类
我有一个 JSP 页面,其中有两个带有提交按钮的表单。这两种形式如何配置不同的动作类?
例如:
form1
将按钮配置提交到classA
并将form2
按钮配置提交到classB
。
可能吗?
java - 找不到操作或结果。没有为 Struts 2 中的操作定义结果
我已将注释配置为将值作为文本返回。但它给了我错误:could not find action or result
.
控制台错误:
行动:
java - Codebehind 插件的访问路径为 .action?
我可以使用 Codebehind 插件在 Struts 2 中将方法作为操作访问吗?由于没有struts.xml
文件,它的工作方式action!method
与 URL 相同。
只是我想知道访问一个方法
如何在课堂上使用 Struts 标签?
班级 :
如果我在提交按钮单击时访问以下方法,我会得到 JSON 数据吗?
所以我可以访问 URL 中的操作
localhost:7001/Sample/JSONmethod.action
获取 JSON 数据?
jquery - JQuery Ajax 表单提交以及通常在 Struts 2 中的同一表单上提交
Struts 标签<s:submit>
和 <sj:submit>
工作在同一个表单上吗?我已经有了 Struts 按钮<s:submit>
,但现在我已经添加了<sj:submit>
。
因此,Struts 2 jQuery 插件按钮工作良好,但 Struts<s:submit>
不工作。
java - Struts 2 S2-016 漏洞缓解直到升级
最近 Struts 修补了一个漏洞,允许攻击者执行远程代码。显然,不修补这就像给黑帽们一个红地毯般的欢迎。
http://struts.apache.org/release/2.3.x/docs/s2-016.html
基本上它允许像这样执行攻击命令:
合法行动:
http://host/struts2-showcase/employee/save.action?redirect:%25{3*4}
被利用的行动:
http://host/struts2-showcase/employee/save.action?redirect:%25{(new+java.lang.ProcessBuilder(new+java.lang.String[]{'command','goes','here'})).start()}
虽然我知道升级应该尽快完成,但尽快将意味着一段时间,因为我们的代码库使用旧的 struts 版本和插件。
这将需要一些重构来升级 Struts 2 库,然后需要对这些库进行测试等。
因此,我的问题是是否有人有任何想法阻止此漏洞被执行?这将只有在我们能够升级之前。
我想知道是否可以在针对 OGNL 进行评估之前编写一个拦截器来清理 URL,如果可以,它会缓解这个问题吗?
我的另一个想法是以某种方式使用 Java 安全管理器来停止任意进程调用,这可能吗?它会临时修补这个洞吗?
如果有人认为这是相关的,正在使用的服务器是 jBoss。
java - 使用 Struts 应用程序时出现错误 404 问题
几天以来,我在运行 Struts Web 应用程序时遇到了一些问题。我尝试了 StackOverflow 中与我的问题相关的几种解决方案,但它们都不起作用。
网页.xml:
struts.xml:
登录.jsp:
登录操作.java:
我添加的库:
- commons-logging-1.1.3.jar
- freemarker-2.3.19.jar
- ognl-3.0.6.jar
- struts2-core-2.3.15.1.jar
- xwork-core-2.3.15.1.jar
访问 URL 时出错:
http://localhost:8080/StrutsHelloWorld/
我试过这个教程。
我的控制台上没有错误,问题视图。
forms - 具有多个提交标签的 Struts 2.3 表单和操作属性
这是一件非常简单的事情,它与 Struts 2.1.x 完美配合。但是我们最近升级到 2.3.15.2 并且它坏了。基本上我们有一个包含多个提交的表单(实际上是很多表单):
如果我将动作粘贴在标签中,一切都很好。但如果它在标签中,我会收到 404 错误。而且是同一个动作!
我一直在调试,发现当你在标签中使用“action”属性时,生成的html是:
据说 Struts 应该使用这个“动作”前缀并说“啊哈!这是一个动作!” 并执行它。它或多或少是这样做的。或者至少尝试这样做。我发现,在非常低的级别上,DefaultActionMapper.handleSpecialParameters() 方法会遍历所有参数并尝试为每个参数创建一个 ParameterAction,如果它不为 null,则执行它。大多数参数产生一个“空”ParameterAction,但不是“action:”。
在文档中,我发现了有关 ParameterAction 的信息:
所以它所做的就是将映射的结果设置为带有 Action 名称的新 ServletDispatcherResult:
另一方面,当在 s:form 标记中指定操作时,映射的结果为空。
这样当我们最终到达 Dispatcher.serviceAction() 时:
因此,当在标签中指定动作时,会调用 proxy.execute(),它只是调用动作/方法本身。这是应该发生的事情!但是当在标签中指定动作时,由于映射有结果,代理的调用被传递给 result.execute(),它调用 ServletDispatcherResult ...最后,我得到一个 404。
这似乎需要做很多工作才能让多个具有操作属性的提交按钮正常工作。这是 Struts 2.3 的已知问题吗?我是否需要为文档中所述的“action”前缀实现 ParameterAction?
编辑
好的,已知的错误,几天前才打开。与此同时,我可以降级到 2.3.15.1 或使用“method”属性而不是“action”属性。
希望它会尽快修复...
java - Struts Action 中的多个入口点(迁移 Struts 2.2.3 -> 2.3.1)
我有一个动作struts.xml
:
JSP:
有几个表单元素,都绑定到一个动作。每个表单都有一个单独的提交按钮,带有不同的method
(例如"shopPdfReprint"
)。每个method
都映射到相应类中的方法。
使用 Struts 2.2.3 一切正常。但是在迁移到 2.3.1 之后,方法映射不起作用。而不是调用相应的方法(例如"shopPdfReprint"
),只execute()
调用类的方法。
我查看了文档,但不幸的是没有找到任何线索,如何适应 2.3.1
有人遇到过这个吗?