当前位置: 首页 > 面试题库 >

Struts 2中的Json插件出现问题

谢旻
2023-03-14
问题内容

我有以下代码,并且我想实现以下功能:/ getJson将以json形式返回用户对象,而/ getJson2将以Json形式返回user2。

@ParentPackage("json-default")
public class JsonAction extends ActionSupport{
private User user = new User("John","Smith"); 
private User user2 = new User("Smith","John"); 
public String populate(){

    return "populate";
}

@Action(value="/getJson", results = {
        @Result(name="success", type="json")})
public String test(){
    return "success";
}

@Action(value="/getJson2", results = {
        @Result(name="success", type="json")})
public String test2(){
    return "success";
}

@JSON(name="user")
public User getUser() {
    return user;
}

public void setUser(User user) {
    this.user = user;
}

@JSON(name="user2")
public User getUser2() {
    return user2;
}

public void setUser2(User user2) {
    this.user2 = user2;
}
}

当前,无论我使用哪种方法,我仍然会得到以下结果:

{"user":{"firstName":"John","lastName":"Smith"},"user2":{"firstName":"Smith","lastName":"John"}}

可能吗?

更新:

修改代码

public class JsonAction extends ActionSupport{
private User user = new User("John","Smith"); 
private User user2 = new User("Smith","John"); 
public String populate(){

    return "populate";
}

@Action(value="/getJson", results = {
        @Result(name="success", type="json",params = {
                "includeProperties",
                "user"})})
public String test(){
    return "success";
}

@Action(value="/getJson2", results = {
        @Result(name="success", type="json",params = {
                "includeProperties",
                "user2"})})
public String test2(){
    return "success";
}

@JSON(name="user")
public User getUser() {
    return user;
}

public void setUser(User user) {
    this.user = user;
}

@JSON(name="user2")
public User getUser2() {
    return user2;
}

public void setUser2(User user2) {
    this.user2 = user2;
}
}

现在我得到

{"user":{}}

{"user2":{}}

问题答案:

是的,有可能,该解决方案需要使用包含/排除参数。

以下是一个示例。

方法getJson1和getJson2显示includeParameters,而getJson3显示excludeParameters。

注意:尽管本示例使用字符串作为include / exclude参数的参数,但该字符串被解释为正则表达式。因此,我可以将action3上的“
string1,string2”替换为“ string *”。

有关更多信息,请参见:https
:
//cwiki.apache.org/confluence/display/WW/JSON%20Plugin

package struts2;

import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;

@ParentPackage("json-default")
public class Test2 extends ActionSupport {

    private String string1 = "One";
    private String string2 = "Two";
    private String other = "Other";

    public String getString1() {
        return this.string1;
    }

    public String getString2() {
        return this.string2;
    }

    public String getOther() {
        return this.other;
    }

    @Action(value="/getJson1", results = {
        @Result(type = "json", params = {
            "includeProperties",
            "string1"
        })})
    public String action1() {
        return ActionSupport.SUCCESS;
    }

    @Action(value="/getJson2", results = {
        @Result(type = "json", params = {
            "includeProperties",
            "string2"
        })})
    public String action2() {
        return ActionSupport.SUCCESS;
    }

    @Action(value="/getJson3", results = {
        @Result(type = "json", params = {
            "excludeProperties",
            "string1, string2"
        })})
    public String action3() {
        return ActionSupport.SUCCESS;
    }
}

… / getJson1 返回{“ string1”:“一个”}

… / getJson2 返回{“ string2”:“ Two”}

… / getJson3 返回{“ other”:“ Other”}



 类似资料:
  • 我使用struts2和hibernate制作了一个web应用程序,并创建了一个war。 它在tomcat中运行良好,但由于weblogic加载了JPA1.0,所以我创建了weblogic.xml,如下所示 这解决了这个问题,它在weblogic 10.3.3中工作得很好,但是当我在weblogic 10.3.2中使用上面的weblogic.xml部署这个相同的war时,它的给出错误如下 发现验证问

  • 本文向大家介绍struts2中通过json传值解决乱码问题的实现方法,包括了struts2中通过json传值解决乱码问题的实现方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了struts2中通过json传值解决乱码问题的实现方法。分享给大家供大家参考,具体如下: 在struts2中如果使用json在jsp和java文件传中文值时往往会出现中文乱码访问,解决此问题可以使用以下方法 一、在

  • 我一直在努力尝试,但我无法克服这个错误。我有Ruby版本1.8.7和Gem版本2.1.11,我试图安装open project,但我总是遇到这个错误 安装json(1.8.1)gem::installer::extensionbuilderror:错误:未能构建gem本机扩展。 迈克 安装json(1.8.1)时出错,Bundler无法继续。在绑定之前,请确保成功。==>出错:(==>安装中止。

  • 问题内容: 我一直在这个问题上苦苦挣扎,因为我是Struts2开发的新手,最近才开始使用此命名Convention Plugin。 我正在尝试创建一个简单的webapp,起初仅包含两个页面: 登录页面(login.jsp) 主页(home.jsp) 首先,向用户显示一个登录页面,如果提供了正确的用户名和密码,他们将登录并重定向到主页。 我已经成功地创建了小型Web应用程序,写下了自定义登录拦截器,

  • 问题内容: 我在SVN上的Eclipse中有一个新的Java项目,只是试图在Eclipse的Project Explorer窗口中打开该项目,并收到此错误: 从插件调用代码时发生了问题。 我该如何解决这个问题? 异常堆栈跟踪: 会话数据: 问题答案: 您的项目可能没有配置为您的补偿。尝试从现有资源中删除并重新创建项目。如果它们不小心提交到SVN(例如,以点开头),也请删除所有的月食内部目录。

  • 我已经为一个Java项目在本地机器上建立了Git remote存储库,基本上我们试图从两个不同的地方处理同一个项目,专用的Git服务器在另一端。 我走过的台阶! •更新主机文件以添加新服务器 我已经成功地做到了; 当我查看Eclipse内置的ErrorLog时: 我得到了; 当我双击 问题是: 如何解决此问题并运行项目文件?请告诉我方向,谢谢。