java - 如果拦截器中身份验证失败,Struts2 返回 json

标签 java json jsp struts2

请注意,我不是 Java 开发人员,因此我的问题可能包含一些令人心碎的假设和无效的代码。

我有一个负责登录身份验证的拦截器。

<global-results>
   <result name="login">/admin/login.jsp</result>
</global-results>

如图所示,当身份验证失败时,它会重定向到login.jsp,即返回值为“login”(在本例中)

我想要实现的是,我返回一些其他值(例如“loginAjax”),并且它不应该发送 HTTP 302,而是应该返回 JSON 响应。

我不知道这是否可能。我在 struts.xml 中有另一部分,当从 Action 返回特定值时,它返回 json。

<result name="success" type="json">
    <param name="includeProperties">
        return_id, return_message
    </param>
</result>

我不知道如何将这两个部分结合在一起并使其适用于同一个拦截器。

最佳答案

全局结果不依赖于一个或多个拦截器或操作:它对每个人来说都是全局的,因此无论谁返回它,它都会在返回时呈现。

你需要添加一个json类型的全局(与你的其他登录结果保持一致,即全局)结果,如下所示:

<global-results>
    <result name="login">/admin/login.jsp</result>
    <result name="loginAjax" type="json" />
</global-results>

然后,您可以发送特定的状态代码或错误代码 like described here .

如果您需要了解应该从拦截器内返回什么样的结果,您应该按照 in this other answer 中的描述进行操作。 ,通过检查成功时返回的结果类型。

P.S:哦,考虑雇用一名 Java 开发人员来正确地完成 Java 工作:)

关于java - 如果拦截器中身份验证失败,Struts2 返回 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23244626/

相关文章:

python - 如何对构成 Ansible 插件的代码进行故障排除?

ios - JSON 没有快速更新

android - 提取 Google Places API 响应的状态代码

java - 异步任务完成后强制更新选项卡内容

java - 在同一文件中存储纯文本和字节信息 - 转换问题

java - 相机对象总是返回 null

java - Android 中 Bitmap 的 getPixels 方法说明

java - 如何在表达式语言中格式化数字?

java - 在同一个 servlet 中处理不同请求的更优雅的方式

java - 如何使用 Java Servlet 和 JSP 以及其他字段从同一页面上传两个文件?