問題タブ [spring-json]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 春のjsonは、必要以上のjsonを書き込みます
コントローラーから単純な JSON オブジェクトを返すために、 json スプリング ビューを使用しています。
問題は、私が望むよりも多くのデータを返すことです。コントローラーでこれだけを行っているときに、検証エラーとモデル内のものを返しています。
ドキュメントのこのページの下部を見ると、POST が返すデータを取得しているように見えます。私は投稿を行っていません。パラメータを使用して URL に直接アクセスして GET を行っています。
この lib を取得して、モデル内のデータのみを返すにはどうすればよいですか?
java - HibernateJPAプロキシを強制的に初期化してJSON呼び出しで使用する方法
Spring 3 +JPA2.0アプリケーションがあります。私の@Controller
場合、初期化されたオブジェクトが必要ですが、プロキシがあり、プログラムで初期化できる必要があります。と同様の機能が必要ですorg.hibernate.Hibernate.initialize(Object)
。
誰かが助けることができますか。オブジェクトはAJAX操作に使用されます。プロパティがプロキシの場合、JSONとして送信できません
jquery - Jquery getJSON が Spring MVC で動作しない
次のコードはリクエストをサーバーに送信できず、その理由がわかりません。
ここに私のjspページの一部があります
そして、Spring コントローラ クラス関数
要件は、ユーザーが「ファーストネーム」入力ボックスに複数の文字を入力した場合、AJAx リクエストをサーバーに送信して、ファーストネームがそれらの文字で始まるすべての人を取得する必要があることですが、ここでは get リクエストがこの関数を呼び出すことはありません。 JQueryリクエスト側で何か問題があると確信していますが、それが何であるかを見つけることができません..
- - -アップデート - - - - -
エラーが見つかりました.. 3行目では、 if( $ ('#firstName').val().length >= 2){ 先頭の $ が欠落していたはずです
json - Spring MVC - HttpMediaTypeNotAcceptableException
Spring MVC および JSON を使用すると、AJAX リクエストに対してこの HttpMediaTypeNotAcceptableException エラーが発生し続けます。エラーの完全なスタック トレースは次のとおりです。
私が行った小さなグーグルは、リクエストに「accept: application/json」のようなものが含まれている必要があることを示しています..これはfirebugからのリクエストヘッダーです..
今、私はここで何が起こっているのか完全に迷っています..他に何が間違ってこのエラーが発生する可能性があります...
spring - Spring JS Ajax呼び出し - 列挙型データバインディングは変換に失敗しますが、文字列は機能します
モデルの列挙型からオプション リストをレンダリングするために、dijit コンポーネントで Spring を使用しています。
Javascript がオフの場合、btnSelect からのポストは、選択されたアイテムをサーバー側の列挙型に正常に変換します。つまり、私の変換サービスは次のメッセージを表示します。
ただし、Javascript がオンで、投稿が XHR を超えると、enum 変換が失敗します。このメッセージを表示する変換サービス:
両方が同じ変換サービスを使用している場合、なぜこれが起こっているのかわかりません。AJAX 呼び出しが列挙型にバインドできるように、特別な構成をセットアップする必要がありますか?
java - JSON ビュー用の JackSon と Spring 2.5 の統合
JSON のサポートには Spring 2.5 と spring-json を使用しています。views.xml には以下の構成があります。
ここで、Spring 3.x が JSON サポートのために内部で JackSon API を使用していることを知りました。私の質問は、Spring 2.5 のデフォルトの実装をオーバーライドして、JackSon を使用する方法です。Spring 3.x の開始方法です。
注: Spring バージョンを移行したくありませんが、Spring 2.5 で Spring-Json の代わりにこの JackSon API を使用する必要があります。
spring - 春の JSON マージ
AJAX を介してフォームからレコードを更新しています。エンティティにマップする JSON オブジェクトがあり、コントローラー メソッドは次のとおりです。
オブジェクトの「id」フィールドでマージする既存のレコードが見つからなかった場合、 v.merge() が null を返すことをドキュメントから期待していました。その場合、それを新しい Vendor オブジェクトとして永続化したいと考えています。
私のJSONには既存のレコードと一致する「id」フィールド値がありますが、ブラウザから更新された商品で常に新しいレコードを挿入しています。
ここでは POST メソッドに 2 つの役割を持たせていることは承知していますが、これは厳密には RESTful ではありません。理論的には、これは私にとってより簡単です (もちろん、そうではないことが判明しています)。
jquery - spring mvc 2.5 に JQuery.ajax(dataType:json) を実装する方法
$.ajax() メソッドと Json を dataType として使用して、jQuery ライブラリで AJAX 呼び出しを実行しようとしています。問題は、それを springmvc 2.5 のアプリに適用しようとすると発生します。適切なチュートリアルが見つかりません。それをSpring mvc 2.5に適用する方法ですが、3.0
乾杯
javax.servlet.ServletException: サーブレット ディスパッチャーの Servlet.init() が例外 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462) をスローしました100) org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:399) org.apache.coyote.http11.Http11Processor.process( Http11Processor.java:317) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:204) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:182) org.apache. tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:311) java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) java.lang.Thread.run(Thread.java:662)
根本的な原因
org.springframework.beans.factory.BeanCreationException: ServletContext リソース [/WEB-INF/dispatcher-servlet.xml] で定義された 'viewResolver' という名前の Bean の作成中にエラーが発生しました: Bean の初期化に失敗しました。ネストされた例外は org.springframework.beans.factory.BeanCreationException: ServletContext リソース [/WEB-INF/views.xml] で定義された名前 'jsonView' の Bean の作成中にエラーが発生しました: Bean のインスタンス化に失敗しました。ネストされた例外は org.springframework.beans.BeanInstantiationException: Bean クラスをインスタンス化できませんでした [org.springframework.web.servlet.view.json.JsonView]: コンストラクターが例外をスローしました。ネストされた例外は java.lang.NoClassDefFoundError: org/apache/commons/beanutils/ConvertUtilsBean org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:480) org.
根本的な原因
org.springframework.beans.factory.BeanCreationException: ServletContext リソース [/WEB-INF/views.xml] で定義された名前 'jsonView' の Bean の作成中にエラーが発生しました: Bean のインスタンス化に失敗しました。ネストされた例外は org.springframework.beans.BeanInstantiationException: Bean クラスをインスタンス化できませんでした [org.springframework.web.servlet.view.json.JsonView]: コンストラクターが例外をスローしました。ネストされた例外は java.lang.NoClassDefFoundError: org/apache/commons/beanutils/ConvertUtilsBean org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:883) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory です。 createBeanInstance(AbstractAutowireCapableBeanFactory.java:839) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.
根本的な原因
org.springframework.beans.BeanInstantiationException: Bean クラスをインスタンス化できませんでした [org.springframework.web.servlet.view.json.JsonView]: コンストラクターが例外をスローしました。ネストされた例外は java.lang.NoClassDefFoundError: org/apache/commons/beanutils/ConvertUtilsBean org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:115) org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy. java:61) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:877) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:839) org.springframework.beans. factory.support.AbstractAutowireCapableBeanFactory.
根本的な原因
java.lang.NoClassDefFoundError: org/apache/commons/beanutils/ConvertUtilsBean org.springframework.web.servlet.view.json.filter.SimplePropertyFilter.setUpBeanUtils(SimplePropertyFilter.java:31) org.springframework.web.servlet.view.json .filter.SimplePropertyFilter.(SimplePropertyFilter.java:27) org.springframework.web.servlet.view.json.JsonView.(JsonView.java:25) sun.reflect.NativeConstructorAccessorImpl.newInstance0(ネイティブメソッド) sun.reflect.NativeConstructorAccessorImpl. newInstance(NativeConstructorAccessorImpl.java:39) sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) java.lang.reflect.Constructor.newInstance(Constructor.java:513) org.springframework.beans.BeanUtils.instantiateClass(BeanUtils. java:100) org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:61) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:877) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:839) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:440) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) java.security.AccessController.doPrivileged(Nativeメソッド) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380) org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264) org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean (AbstractBeanFactory.java:261) org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185) org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164) org.springframework .beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429) org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728) org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380) org.springframework.web.servlet.view.XmlViewResolver.initFactory(XmlViewResolver.java:138) org.springframework.web.servlet.view.XmlViewResolver.initApplicationContext(XmlViewResolver.java:89) org.springframework.context.support.ApplicationObjectSupport.initApplicationContext(ApplicationObjectSupport.java:119) org.springframework.web.context.support.WebApplicationObjectSupport.initApplicationContext(WebApplicationObjectSupport.java:69) org.springframework.context.support.ApplicationObjectSupport.setApplicationContext( ApplicationObjectSupport.java:73) org.springframework.context.support.ApplicationContextAwareProcessor.postProcessBeforeInitialization(ApplicationContextAwareProcessor.java:70) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:350) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1331) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:47 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) java.security.AccessController.doPrivileged(ネイティブメソッド) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java: 380) org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264) org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261) org.springframework.beans.factory.support.AbstractBeanFactory. getBean(AbstractBeanFactory.java:185) org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164) org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429) org. springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728) org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380) org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:402) org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:316) org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:282) org.springframework. web.servlet.HttpServletBean.init(HttpServletBean.java:126) javax.servlet.GenericServlet.init(GenericServlet.java:160) org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462) org.apache. catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:399) org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:317) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:204) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:182) org.apache.tomcat.util.net.JioEndpoint$SocketProcessor.run(JIoEndpoint. java:311) java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) java.lang.Thread.run(Thread.ジャワ:662)ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) java.lang.Thread.run(Thread.java:662)ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) java.lang.Thread.run(Thread.java:662)
ajax - Springフレームワークが3.0.2から3.2.0にアップグレードされると、SpringJSONが問題を引き起こします
Springフレームワークバージョン3.0.2とHibernate(NetBeans 6.9.1)を使用してWebアプリケーションを操作していました。後で、前の質問の1つで述べたように、複数のファイルのアップロードで問題を引き起こしているバグの1つがあることに気付きました。
ソリューションの取得に苦労しましたが、成功しませんでした。そのため、Springバージョンを3.2.0にアップグレードしました。
以前のバージョン(3.0.2)では、AJAXはJackson 1.9.8(そのダウンロードページ)で正常に動作していましたが、新しいバージョン(3.2.0)では、すべて正常に動作しますが、AJAX呼び出しはJavaScriptコードのあらゆる場所でエラーを警告します。
国選択ボックスで国の1つが選択され、対応する状態リストがDAOとともにSpringコントローラーから取得されるというシナリオが1か所にあります。SpringコントローラでURLにマッピングされる方法は次のとおりです。
このメソッドは、国選択ボックスで国が選択されたときに呼び出されます。このgetStateSelectBox()
メソッドは、DAOクラスの1つで次のように定義されています。
ループはデモンストレーションのためだけのものであり、AJAXリクエストによって提供されたforeach
ものに対応するIDとともにすべての状態を表示しますが、 JSPには返されません。countryId
List
このAJAXリクエストの送信に使用されるJavaScriptコードは、エラーを警告します。JSONマッピングにいくつかの問題があるようです。同じことが、以前のバージョンのSpringフレームワーク(3.0.2)でも機能していました。なぜこれがSpringの上位バージョンである3.2.0で問題を引き起こすのかわかりません。Springバージョン3.2.0で欠けている可能性のあるものはありますか?
JavaScriptコードを確認する必要がある場合、これを実現するための完全なJavaScriptコードは次のようになります。
確かに、Jacksonライブラリはクラスパス上にあり、サーバー側でエラーや例外は発生していません。AJAXリクエストは成功し、Spring経由でDAOに送信され、タイプのリストがList<Object[]>
データベースから取得されますが、JSONからJSPへの応答ではありません(JavaScript配列にマップできます/マップする必要があります)。おそらく、JSONマッピングには何かが欠けているようですが、以前のバージョンのSpringには当てはまりませんでした。
編集:
List<Object[]>
3.0.2と3.2.0の両方のフレームワークで解析しようとしました。
このファイルtemp.json
には次の文字列が含まれています。
どちらの場合も(両方のフレームワークを使用)。したがって、JSON応答はどちらの場合も同じである必要があるようです。
このtemp.json
ファイルは、次のように逆シリアル化することもできます。
それは正常に動作し、ループはタイプforeach
のを繰り返します。したがって、問題はSpringフレームワーク自体が原因である可能性があります。他に何が必要か、わかりません。なぜそれはジャクソンによってマッピングされないのですか?List
List<Object[]>
json - 春のAJAXとCSRF
次のようなCSRF攻撃を防ぐために、HTTPリクエストヘッダーとPOST隠しフィールドでCSRFトークンを送信しています。
この関数は、CKEditor によって保持されている CMS コンテンツを、JSON を介して Spring への POST AJAX 呼び出しでデータベースに挿入することを目的としています (ボタンがクリックされたとき)。
if(!request){...}
関数本体の先頭にある条件チェックは、(おそらくせっかちなユーザーによる) AJAX 呼び出しの重複を防ぐためのものです。
ランダムに生成されたトークン値は、ページが読み込まれ、JavaScript 変数で取得されるとすぐに非表示フィールドに格納されます。
次のハンドラは、リクエストとともに送信されるヘッダーを設定します。
なぜヘッダーが必要なのですか? 隠しフィールドとして送信されたトークンだけでは十分ではありませんか? 古い Flash Player のため、ヘッダーを確認する必要がありますか (例として)?
このアプローチでは、サーバー側で、ヘッダーと非表示フィールドの両方の値が一致するかどうかを確認しています (セッション内のそのトークンの存在を確認するとともに、セッション内のトークンの存在を確認することはどこにもありませんただし、言及されています})。
上記の JavaScript 関数によって呼び出される Spring コントローラ クラスのメソッドは次のとおりです。
ここCKEditorContentsHandler
で、このメソッドの最初のパラメーターは、ニーズを満たすためにいくつかのプロパティを保持する単純な Java クラスです。
トークンを Cookie に保存し、投稿されたデータ (隠しフィールド) と一緒に送信して、投稿されたデータと Cookie の値が一致するかどうかを確認することもお勧めします。そうでない場合は、CSRF の可能性があります (同じオリジン ポリシーにより、攻撃者は被害者のブラウザーで Cookie を読み取ったり変更したりできないため)。
その後、なぜヘッダーが必要なのですか? CSRF 攻撃を防ぐ (または少なくとも軽減する) ための推奨される方法は実際には何ですか?
次の回答はそれをうまく要約しています。