标签: struts2

Struts2 JSON插件:将ActionMessages,ActionErrors和FieldErrors添加到响应中

我正在制作JQuery Ajax帖子,并希望任何actionmessages,actionerrorsfielderrors在响应中添加到操作中(以JSON格式).

我添加了这个结果:

<result name="input" type="json">    
    <param name="ignoreHierarchy">false</param>  
    <param name="includeProperties">fieldErrors,actionErrors</param>  
</result>
Run Code Online (Sandbox Code Playgroud)

到我的动作配置struts.xml.

我得到了:{"actionErrors":[],"fieldErrors":{}}尽管在值堆栈上存在字段错误,但作为响应返回.

如果我将结果配置更改为:

<result name="input" type="json">    
    <param name="ignoreHierarchy">false</param>  
    <param name="root">fieldErrors</param>  
</result>
Run Code Online (Sandbox Code Playgroud)

JSON响应是我预期的::
{"thePropertyWithValidationError":["You must supply correct information."]}

如果可能的话,我真的希望响应中包含操作错误和字段错误.

有任何想法吗?非常感谢你提前!!

编辑:
我想我可能需要利用某种正则表达式......我试过:

<result name="input" type="json">    
    <param name="ignoreHierarchy">false</param>  
    <param name="includeProperties">fieldErrors\[\d+\],actionErrors\[\d+\]</param>  
</result>
Run Code Online (Sandbox Code Playgroud)

结果相同:

{"actionErrors":[],"fieldErrors":{}}
Run Code Online (Sandbox Code Playgroud)

我还发现了这个错误报告,当我使用Struts v2.2.1时,这可能会导致我的问题.(v2.2.2尚未出局)

编辑#2:

也许JSONValidationInterceptor是我需要的......我似乎无法弄清楚如何将它与我的自定义JQuery Ajax帖子一起使用...

我正在使用json拦截器来填充我的属性 - 下面是我的动作配置:

<action name="MyAction" method="add" class="com.test.actions.MyAction">
    <interceptor-ref name="json" />
    <interceptor-ref name="jsonValidationWorkflowStack"/>
    <interceptor-ref name="MyCustomInterceptor" />  
    <result name="success" type="json" /> …
Run Code Online (Sandbox Code Playgroud)

validation ajax plugins json struts2

12
推荐指数
2
解决办法
1万
查看次数

没有为动作和结果输入定义结果

我正在使用Struts2

我得到错误,因为没有为动作和结果输入定义结果

<action name="update" method="updatePhase" class="Project">
   <result name="updated">/Project.jsp</result>
</action>
Run Code Online (Sandbox Code Playgroud)

我的动作不是传递给我的java类.

谁能帮我?

struts2

12
推荐指数
2
解决办法
7万
查看次数

拦截器和滤波器之间的区别 - 这是对的吗?

我正在研究这个问题,这样我才能在面试中做出更好的回应.我一直在寻找清晰简洁的答案.

到目前为止,如果我错了或缺乏细节,请务必纠正我:

  1. 过滤器是Servlet API的一部分,拦截器是Struts 2.(虽然看起来很明显)
  2. Interceptor堆栈会触发已配置包中的请求,而过滤器仅适用于其映射的URL.
  3. 拦截器可以配置为执行或不执行,具体取决于具体的目标操作方法,通过excludeMethods和includeMethods,而过滤器缺少此功能.
  4. 过滤器是拦截过滤器模式的实现,而拦截器是拦截器模式.

这看起来像是一个准确而完整的答案吗?我应该添加或更正任何内容吗?线程问题/差异怎么样?

struts struts2

12
推荐指数
1
解决办法
3万
查看次数

Struts2如何返回JSON响应

我目前正在创建一个Web应用程序,用户可以从数据库中获取标记为JSON,

这是我的struts动作

public String execute(){


    Gson gson = new Gson();
    String tagsAsJson = gson.toJson(audioTaggingService.findTagsByName(q));
    System.out.println(tagsAsJson);

    return "success";
}
Run Code Online (Sandbox Code Playgroud)

更新:

tagsAsJson已经处于JSON格式的所有我想要的是只返回,而不是整个集体诉讼本身.

它返回这样的东西

这是我想要返回给用户的数据

[{"id":2,"name":"Dubstep","description":"Dub wob wob"},{"id":3,"name":"BoysIIMen","description":"A 1990s Boy Band"},{"id":4,"name":"Sylenth1","description":"A VST Plugin for FLStudio "}]
Run Code Online (Sandbox Code Playgroud)

如何返回tagsAsJsonas ar JSON响应?因为JSON响应将由客户端代码使用.

java json action struts2 gson

12
推荐指数
3
解决办法
4万
查看次数

在FreeMarker模板中处理错误的不同方法有哪些?

如何抑制FreeMarker模板错误?我在这里看:http://freemarker.sourceforge.net/docs/pgui_config_errorhandling.html 但我不明白如何"TemplateExceptionHandler.IGNORE_HANDLER".我正在使用Struts2以及如何显示另一个ftl页面而不是显示堆栈跟踪?

class MyTemplateExceptionHandler implements TemplateExceptionHandler {
    public void handleTemplateException(TemplateException te, Environment env, java.io.Writer out)
            throws TemplateException {
        try {
            out.write("[ERROR: " + te.getMessage() + "]");
        } catch (IOException e) {
            throw new TemplateException("Failed to print error message. Cause: " + e, env);
        }
    }
}

...

cfg.setTemplateExceptionHandler(new MyTemplateExceptionHandler());
Run Code Online (Sandbox Code Playgroud)

http://freemarker.sourceforge.net/docs/pgui_config_errorhandling.html上找到了上面的内容 我如何使用它?最后一行,cfg来自哪里?

"进入FreeMarker API的主要入口点"...... http://massapi.com/source/freemarker-2.3.18/src/freemarker/template/Configuration.java.html

所以,这是主要的切入点,我猜cfg来自这个类.我仍然没有看到控制器将如何进入我的类MyTemplateExceptionHandler.

以下行需要去哪里?

cfg.setTemplateExceptionHandler(new MyTemplateExceptionHandler());
Run Code Online (Sandbox Code Playgroud)

这只是将这条线放在正确位置的问题吗?

这是我当前班级的样子:

    import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.Writer;
import java.util.Properties;

import freemarker.cache.FileTemplateLoader;
import freemarker.cache.MultiTemplateLoader;
import …
Run Code Online (Sandbox Code Playgroud)

java freemarker struts2

12
推荐指数
2
解决办法
7866
查看次数

11
推荐指数
2
解决办法
1万
查看次数

如何在第一次显示时告诉Struts2不验证表单?

我目前正在尝试学习Struts2.

我创建了一个表单,一个处理它的动作,一个用于验证它的XML,以及struts.xml中的操作.

每次表单显示时,即使是第一次,Struts2也会尝试验证,因此在用户有机会完成错误之前会显示错误.

这是相关代码:

<!-- /WebContent/views/user/login.jsp -->
<?xml version="1.0" encoding="ISO-8859-1" ?>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Login Page</title>
<s:head />
</head>
<body>
    <h1>Login Page</h1>
    <s:form action="executeUser">
        <s:textfield key="userBean.userName" />
        <s:password key="userBean.password" />
        <s:submit align="center" />
    </s:form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
<!-- /src/struts.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

    <constant name="struts.devMode" value="true" />

    <package …
Run Code Online (Sandbox Code Playgroud)

java validation jsp struts2

11
推荐指数
2
解决办法
1万
查看次数

Struts 2,以List格式转换日期,非默认格式

我有一个动作,该动作具有日期列表属性.请求参数将以"yyyy.MM.dd"格式显示.在"-coversion.properties"文件中(我不想为此目的使用全局类型转换器).

我没有使用注释.

如果它只是一个日期而不是集合,那么特定于属性的转换将很容易.是否可以将特定于属性的类型转换应用于List的元素?

java struts2

11
推荐指数
1
解决办法
1258
查看次数

Struts2从JSP访问枚举

我有以下课程

package com.test;

public class SomeClass {
   public enum COLOR {RED,BLUE}
}
Run Code Online (Sandbox Code Playgroud)

我想COLOR在JSP中访问枚举值.我尝试了以下代码,但它不起作用.

<s:property value="@com.test.SomeClass.COLOR@RED"/>
<s:property value="@com.test.SomeClass@COLOR.RED"/>
Run Code Online (Sandbox Code Playgroud)

以前有人问过这个问题吗?[我已经在struts.xml中启用了静态方法访问]

enums jsp struts2 ognl

11
推荐指数
1
解决办法
6898
查看次数

如何使用Hibernate获取最后插入的id

我想在Hibernate中获取最后插入的值的id.

搜索后:

Long lastId = ((Long) session.createSQLQuery("SELECT LAST_INSERT_ID()").uniqueResult()).longValue();
Run Code Online (Sandbox Code Playgroud)

但是下面的代码给了我这个错误:

java.lang.ClassCastException:java.math.BigInteger无法强制转换为java.lang.Long

请分享你的想法!

Long lastId = ((BigInteger) session.createSQLQuery("SELECT LAST_INSERT_ID()").uniqueResult()).longValue();
Run Code Online (Sandbox Code Playgroud)

别忘了导入:

import java.math.BigInteger;

java mysql hibernate struts2

11
推荐指数
1
解决办法
2万
查看次数

标签 统计

struts2 ×10

java ×6

json ×2

jsp ×2

validation ×2

action ×1

ajax ×1

enums ×1

freemarker ×1

gson ×1

hibernate ×1

mysql ×1

ognl ×1

plugins ×1

prerequisites ×1

spring ×1

struts ×1