当AngularJs组件通过URL调用它时,如何返回JSON数组

时间:2014-09-10 06:41:07

标签: json angularjs java-ee ejb ng-grid

我将使用AngularJs组件" ng-grid"显示该数据网格上的人员列表。在" main.js"该组件应该从这样的URL中读取数据

$http.get('http://localhost:7001/UserPortal/test/json/JsonResualt.jsf').success(function (largeLoad)

我的问题是如何定义它!

实际上我写了一个方法来获取数据并将其转换为像这样的JSONArray

    public String toJson(){
    String query = "select * from t_person";
    JSONObject jsObj = new JSONObject();

    JSONArray prsJsonArray = new JSONArray();
    try {
        ArrayList<PersonBean> persons = some code to fetch data
        for (PersonBean personBean : persons) {     
            JSONObject prsJsObj = new JSONObject();             
            prsJsObj.putOpt(String.valueOf(persons.indexOf(personBean)), personBean);
            prsJsonArray.put(prsJsObj);
        }   
        jsObj.put("prsJsonArray", prsJsonArray);
        getResponse().setContentType("application/json");
        getResponse().getWriter().write(jsObj.toString());


    } catch (Throwable e) {
        e.printStackTrace();
    }

}

当我调试它时,在&#39; prsJsonArray&#39;我有一些JSON数据,我可以在响应对象上使用它。 我的问题是,如何直接从URL调用此方法?或者我可以采取其他方式来处理这个问题吗? 我使用J2EE和EJB,我的网页是JSF

提前致谢。

1 个答案:

答案 0 :(得分:1)

你有一些完全错误的东西。您使用JSF页面作为Web服务,这很糟糕。如果您不想创建一个Web服务来检索JSON对象,您应该使用Spring或JAX-RS之类的东西创建一个宁静的服务。
例如,使用JAX-RS:

@Path("userportal/json/metallica")
public class JSONService {

    @GET
    @Path("/get")
    @Produces(MediaType.APPLICATION_JSON)
    public Track getTrackInJSON() {

        Track track = new Track();
        track.setTitle("Enter Sandman");
        track.setSinger("Metallica");

        //Or retrieve data from DB by calling a DAO for example

        return track;

    }
}