struts2+中的纯文本400错误消息;雄猫
我想要一个操作,每当验证失败时,发出一个400错误HTTP响应,并以文本/纯文本形式解释问题 我可以使用org.apache.struts2.dispatcher.HttpHeaderResult获取400错误:struts2+中的纯文本400错误消息;雄猫,struts2,tomcat6,Struts2,Tomcat6,我想要一个操作,每当验证失败时,发出一个400错误HTTP响应,并以文本/纯文本形式解释问题 我可以使用org.apache.struts2.dispatcher.HttpHeaderResult获取400错误: @Action(results = { @Result(name = SUCCESS, type=ResultTypes.HTTP_HEADER, params = { "status", "200" }), @Result(name = INP
@Action(results = {
@Result(name = SUCCESS, type=ResultTypes.HTTP_HEADER,
params = { "status", "200" }),
@Result(name = INPUT, type=ResultTypes.HTTP_HEADER,
params = { "error", "400", "errorMessage", "${errorMessage}" })
})
@Override
public String execute() {
return INPUT;
}
public String getErrorMessage() {
return "There was an error";
}
问题是Tomcat将我的响应“包装”到一个HTML页面中,如下所示:
HTTP/1.1 400 Bad Request
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=utf-8
Content-Length: 1214
Date: Sun, 20 Mar 2011 00:43:55 GMT
Connection: close
<html><head><title>Apache Tomcat/6.0.29 - Error report</title><style><!--
H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;}
H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;}
H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;}
BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;}
B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;}
P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}
A {color : black;} A.name {color : black;} HR {color : #525D76;}--></style> </head>
<body><h1>HTTP Status 400 - There was an error</h1><HR size="1" noshade="noshade">
<p><b>type</b> Status report</p><p><b>message</b> <u>There was an error</u></p>
<p><b>description</b> <u>The request sent by the client was syntactically incorrect (There was an error).</u></p>
<HR size="1" noshade="noshade"><h3>Apache Tomcat/6.0.29</h3></body></html>
谢谢。使用web.xml中的错误页面配置指定用于响应代码的页面
<error-page>
<error-code>400</error-code>
<location>/error/400.html</location>
</error-page>
400
/错误/400.html
您可以使用:
- your action code -
if (errorOccurs)
return ERROR;
struts.xml:
<action name="..." class="...">
<result type="json"> <!-- success -->
<param name="root">...</param>
</result>
<result name="error" type="json"> <!-- error -->
<param name="root">...</param>
<param name="statusCode">500</param>
</result>
</action>
-您的操作代码-
如果(发生错误)
返回误差;
struts.xml:
...
...
500
如Object所示,您需要提供一个自定义错误页。我想这是解决方案的一部分,但是:-如给定,它将发出一个HTML页-如果替换为400.txt,我将得到一条固定的纯文本消息,而不是由操作发出的消息。您可以在错误页面中从操作访问消息,使其成为一个内容类型为text/plain的JSP页面。谢谢各位,这就是完整的答案。诀窍是使用JSP——所有让Struts2为错误页面服务的尝试都是徒劳的。
- your action code -
if (errorOccurs)
return ERROR;
struts.xml:
<action name="..." class="...">
<result type="json"> <!-- success -->
<param name="root">...</param>
</result>
<result name="error" type="json"> <!-- error -->
<param name="root">...</param>
<param name="statusCode">500</param>
</result>
</action>