struts2 错误集锦

struts2 错误集锦 version 2.0.11
Error building results for action Login in namespace
你所配置的 Login action 所在的包没有扩展其父类如 struts-default

=====================================================================================
严重: Could not find action or result
No result defined for action *.action.AuthorityDownAction and result error - action -

AuthorityDownAction 是一个下载的控制类
如果成功返回 SUCCESS ,否则返回 ERROR
出现这种错误可能的原因是在错误的时候返回 ERROR,在这里不能返回 ERROR,目前原因还不清楚,也没时间去看它的源码。在这里只要自己想返回一个错误或者重定向的页面,那么不要使用 ERROR 就可以了。用LOGIN 或者 自定义的 字符串都可以

=====================================================================================
当你做国际化的时候,如果你的国际化文件为 messages.properties, messages_zh_CN.properties, messages_en.properties。 如果你在 struts.properties 写入 struts.custom.i18n.resources=messages.properties,那么你将不能达到你的目的。如果这种情况下,无论你怎么改变 浏览器的语言,都不能得出你所想要的国际化信息,那么你就得注意你的国际化文件定义了。是否关键字不对称。同时你也的注意类似我上面写的 struts.custom.i18n.resources=messages.properties 而不是 struts.custom.i18n.resources=messages

=====================================================================================
<s:i18n 标签很容易在 apidoc文档中找到用法,一定要将所要国际化的块都放入<s:i18n name="临时国际化文件">
........
</s:i18n>
中即可

=====================================================================================
Attribute onChange invalid for tag select according to TLD
如果出现这种情况,那么你得注意 大小写的问题了。这涉及到挺多的控件方法,它们并不遵循骆驼命名规则。将上面的 页面中的 onChange 改为 onchange 就可以了

=====================================================================================
Struts2 标签有个问题,如果你将几个页面同时堆积成一个页面的时候,如果这几个页面都有 struts2 标签,那么你就必须<%@taglib prefix="s" uri="/struts-tags"%> 语句,如果不导入,你将会看到页面上有些东西正常显示,有些东西不该显示的也显示了。那么此时,你最好查看该页面的源码,如果该页面有 struts2 的标签没有转换,那么你就应该考虑是不是我上面说的,没有导入 <%@taglib prefix="s" uri="/struts-tags"%> 语句。
还有中情况,当你把 jsp 页面都写好以后(将 strut2 的必要标签加入),然而,运行却没有任何反应,后台并没有报错,那么你就得看看是不是页面中 struts2 引入的属性是不是有问题,如果都没有问题,那么你就应该看看此页面是否导入了 strut2 的标签包 <%@ taglib prefix="s" uri="/struts-tags" %>
--------------------------------------------------------------------------------------------------------------------------------------
Locales.java

package sample;

import java.util.HashMap;
import java.util.Locale;
import java.util.Map;

public class Locales {

public Map<String, Locale> getLocales() {
Map<String, Locale> locales = new HashMap<String, Locale>();
locales.put("American", Locale.US);
locales.put("China", Locale.CHINA);
return locales;
}
}

--------------------------------------------------------------------------------------------------------------------------------------
header.jsp

<%@taglib prefix="s" uri="/struts-tags"%>
<script type="text/javascript">
function langSelect() {
document.langForm.submit();
}
</script>
<s:set name="SESSION_LOCALE" value="#session['WW_TRANS_I18N_LOCALE']" />
<s:bean id="locales" name="sample.Locales" />

<form action="<s:url includeParams='get' encode='true'/>" name="langForm">
Language:
<s:select label="Language"
list="#locales.locales"
listKey="value"
listValue="key"
value="#SESSION_LOCALE == null ? locale : #SESSION_LOCALE"
name="request_locale"
οnchange="langSelect()" />
</form>

--------------------------------------------------------------------------------------------------------------------------------------
index.jsp

<%@ page contentType="text/html; charset=UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>test language change</title>
<s:include value="./header.jsp"/>
</head>
<body>

<h2>
<s:text name="test" />
</h2>
<h1>
<s:property value="%{getText('test')}" />
</h1>
</body>
</html>

--------------------------------------------------------------------------------------------------------------------------------------
struts.xml
<struts>
<package name="sample" extends="struts-default">
<action name="Test">
<result>/sample/index.jsp</result>
</action>
</package>
</struts>

http://localhost:8010/工程名/Test.action

=====================================================================================

<s:hidden /> 这个要人命的东西,如果你在做页面转换提交的时候,用到了它,而你做的任何事情都是按照规定及语法做的,然后却得到了意想不到的情况。你就得注意了。具体情况不好说,不过我建议你不要想当然的认为 <s:hidden name="bill.id" /> 类似的会帮你生成 <input type="hidden" name="bill.id" id="bill.id" value="1" /> (假设 bill.id = 1),然而,你会发现你错了。
它会自动生成一个 <input type="hidden" name="bill.id" id="bill_id" value="1" /> 的html hidden
所以,在写<s:hidden />时,如果出现了,意想不到的情况,那么最好的办法就是看 该显示页面的源码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值