客户端验证对我不起作用。首先,我认为这是一个myeclipse故障,不会将它们复制到根文件夹,但后来我发现js和css文件驻留在struts核心jar中。现在我想知道我应该做什么!如果我找到并将所有js和css文件从相应的文件夹复制到webRoot,或者有更改配置等智能解决方法吗? Struts应该自己复制吗?
我在Struts中使用Tiles。这可能是问题吗?
我的JSP文件位于WEB-INF文件夹中!它会引起一些问题吗?
使用像struts2-jquery插件这样的东西可以解决我的问题吗?
我使用struts2!
我的struts2过滤器配置是
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<listener>
<listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class>
</listener>
答案 0 :(得分:2)
在Java项目(以及其他项目)中,Eclipse会将所有文件从SOURCE文件夹复制到OUTPUT文件夹。
这意味着如果你将MyClass.java和foobar.properties放在/ src文件夹中,你的/ bin文件夹下会有MyClass.class和foobar.properties(根据为输出文件夹选择的名称),你将建立你的项目。
为了实现更多自动化,例如替换配置文件中的令牌(比如说环境变量配置),或者动态检索所需的库,通常采用的两个主要工具是Apache Ant(Apache Ivy作为依赖管理器),或Apache Maven。
通常,
典型的结构可能是:
src |
|-- java
|-- web
|-- css
|-- js
|-- jsp
|-- WEB-INF
|-- lib
看看这个SO答案:
Best location to put your CSS and JS files in a Mavenized Java Web app?
Where do CSS and JavaScript files go in a Maven web app project?
也就是说,当您引用客户端验证时,需要更明确。 如果你的意思是Javascript验证,那么像上面一样重构项目,然后描述你的问题,看看JS控制台;
但是使用Struts2最好用XML Validation验证输入,因为客户端验证不可靠:
假设我绕过了使用FireBug注入HTML directyl的javascript控件,或者我在运行时使用所需参数创建了一个Form并将其发送到服务器,或者我正在使用禁用了javascript的浏览器...客户端不受你的控制,那么验证服务器端是一个好习惯。
答案 1 :(得分:2)
这里的具体问题是过滤器配置:
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
推荐的配置(除非您明确知道自己在做什么)是要映射到*
:
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*</url-pattern>
</filter-mapping>
如果您只映射到*.action
,则过滤器不会处理非操作请求(如CSS和JavaScript)。 S2检查它(S2)知道的文件请求,例如它自己的CSS和JavaScript文件,并且即使它们不是动作请求,也会自己提供这些请求。
S2 guides' Static Content section中记录了这一点。
完全有效映射到*.action
,但是做需要提取静态文件并将它们放在所需的位置,至少如果你打算使用默认的S2主题/ JavaScript。这也是可选的:该框架旨在让您相对快速地开始,但如果您有框架无法处理的特定需求,那么使用S2的那部分可能是也可能不是最佳选择。< / p>