0

html、json、または xml ビューを返すようにアプリケーションを構成しました。html ビューと xml ビューは問題ありませんが、json ビューには問題があります。

返される json には、常に「{} &&」というプレフィックスが付けられます。

{} && {"asd":{"name":"Practical Spring LDAP","isbn":"978-1475265453","author":"Balaji Varanasi"}}

ビューをレンダリングするための私の春の設定は

<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
      <property name="mediaTypes">
        <map>
          <entry key="html" value="text/html"/>
          <entry key="json" value="application/json"/>
          <entry key="xml" value="application/xml"/> 
        </map>
      </property>
      <property name="viewResolvers">
        <list>
          <bean class="org.springframework.web.servlet.view.UrlBasedViewResolver">
            <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
            <property name="prefix" value="/WEB-INF/jsp/"/>
            <property name="suffix" value=".jsp"/>
          </bean>
        </list>
      </property>
      <property name="defaultViews">
        <list>
          <bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">
            <property name="prefixJson" value="true"/>
          </bean>

          <bean class="org.springframework.web.servlet.view.xml.MarshallingView">  
             <constructor-arg>  
                 <bean class="org.springframework.oxm.jaxb.Jaxb2Marshaller">  
                     <property name="classesToBeBound">  
                         <list>  
                             <value>com.sam.beans.Book</value>  
                          </list>  
                     </property>  
                 </bean>  
             </constructor-arg>  
         </bean>  
        </list>
      </property>
    </bean>

サンプルコントローラー

@RequestMapping("/getBook")
public String showBook(Model model)  
{  
    model.addAttribute("book", new Book("Practical Spring LDAP", "978-1475265453", "Balaji Varanasi"));  

    return "book";  
}

助けが必要です...

更新: Book のクラス定義を追加する

@XmlRootElement(name="book")  
public class Book  
{  
    private String name;  
    private String isbn;  
    private String author;  

    public Book()  
    {  

    }  

    public Book(String name, String isbn, String author)  
    {  
        this.name = name;  
        this.isbn = isbn;  
        this.author = author;  
    }  

    public String getName() {  
        return name;  
    }  
    public void setName(String name) {  
        this.name = name;  
    }  
    public String getIsbn() {  
        return isbn;  
    }  
    public void setIsbn(String isbn) {  
        this.isbn = isbn;  
    }  
    public String getAuthor() {  
        return author;  
    }  
    public void setAuthor(String author) {  
        this.author = author;  
    }  
}  
4

2 に答える 2

0

修理済み

現在ModelAndViewを使用しており、ビューでMappingJacksonJsonViewを提供しています。

ModelAndView modelAndView = new ModelAndView(new MappingJacksonJsonView(),"book", new Book("Practical Spring LDAP", "978-1475265453", "Balaji Varanasi"));

モデルだけを使用することの何が問題なのかわかりません。

于 2012-07-11T05:44:10.910 に答える
0

@ResponseBodyリクエストを処理する関数の戻り値の型で使用します。

@RequestMapping("/getBook")
public @ReponseBody 
String showBook(Model model)  
{  
    model.addAttribute("book", new Book("Practical Spring LDAP", "978-1475265453", "Balaji Varanasi"));  

    return "book";  
}
于 2012-07-15T13:34:53.483 に答える