Spring MVC AJAX e JSON utilizzando visualizzazione personalizzata Resolver, e visualizzazione personalizzata

StackOverflow https://stackoverflow.com/questions/3121252

Domanda

visualizzazione personalizzata:

public class MyView extends AbstractView {
   .... awesome stuff ...
}

Controller:

@RequestMapping(value="mylocation")
public ModelAndView dosomething() {
...
   modelAndView.setView( new MyView() );
   return modelAndView;
}

Per qualche ragione questo non funziona ... L'unica vista risolutore che ho è il seguente:

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
          p:prefix="/WEB-INF/jsp/"
          p:suffix=".jsp" >
        <property name="exposedContextBeanNames">
            <list>
                <value>spEnv</value>
            </list>
        </property>
    </bean>

questo codice non funziona perché si sta cercando di creare qualche vista JSP secondo ... Non sono sicuro, il percorso del mio modulo di presentazione; e, ovviamente, non c'è vista JSP per questo, mi aspetto JSON da restituire in realtà, ma per qualche motivo questo non funziona, è solo cercando di me inoltrare ad alcuni JSP, quindi sto cercando di indovinare che ho bisogno di specificare come gestire questo nel mio XML ... ma ho visto circa 1000 diversi modi in cui le persone tornano JSON, e tutti sono molto confusa per me, sto solo cercando il modo più semplice, così posso prendere da ci

edit: ho aggiunto una risposta che è un buon inizio, ma consente di digitare ".json" dopo qualsiasi URL e farà alcune cose davvero male se, come il controller non mi aspettavo, quindi ho bisogno in qualche modo avere questa visione resolver si applicano solo a URL garantiti

È stato utile?

Soluzione

Ok, finalmente dopo aver provato un milione di combinazioni

@RequestMapping(value = "/test/data")
    public TestFormData dostuff() {
        TestFormData data = new TestFormData();
        data.setName("myname");
        return data;
    }

e poi questo

<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver" p:order="1">
        <property name="mediaTypes">
            <map>
                <entry key="json" value="application/json"/>
            </map>
        </property>
        <property name="defaultViews">
            <list>
                <bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />
            </list>
        </property>
    </bean>

Io non capisco come posso restituire un oggetto da qui ...

Ma questo in realtà, mentre semplice, e molto utile non è accettabile perché poi sono andato a qualche altra pagina del mio sito web, e appena messo un arbitrario ".json" dopo l'url ed ha generato un'eccezione che dà il MODO utenti troppe informazioni su mia richiesta, in modo sostanzialmente ho bisogno di trovare un modo di avere questa possibilità su alcuni controllori che sono protetti ...

Tutte le idee?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top