タグ付けされた質問 「spring-mvc」

Model-View-Controller(MVC)パターンに基づいてJava Webアプリケーションを構築するためのフレームワーク。これは、基礎となるビューテクノロジーから、柔軟で分離されたコードを促進します。


4
フィールドインジェクションとは正確には何であり、それを回避する方法は?
フィールドインジェクションは推奨されないというSpring MVCおよびポートレットに関するいくつかの投稿を読みました。私が理解しているように、フィールドインジェクションとは、次の@AutowiredようなBeanをインジェクトすることです。 @Component public class MyComponent { @Autowired private Cart cart; } 私の研究中に、コンストラクター注入についても読みました: @Component public class MyComponent { private final Cart cart; @Autowired public MyComponent(Cart cart){ this.cart = cart; } } これらのタイプの注射の両方の長所と短所は何ですか? EDIT 1:この質問はの重複としてマークされているとおり、この質問私はそれをチェックします。質問にも回答にもコード例がないため、使用している注入タイプを推測して正しいかどうかはわかりません。

4
Spring MVCタイプ変換:PropertyEditorまたはConverter?
Spring MVCでデータをバインドして変換する最も簡単で最も簡単な方法を探しています。可能であれば、XML構成を行わないでください。 これまでのところ、PropertyEditorsを次のように使用しています。 public class CategoryEditor extends PropertyEditorSupport { // Converts a String to a Category (when submitting form) @Override public void setAsText(String text) { Category c = new Category(text); this.setValue(c); } // Converts a Category to a String (when displaying form) @Override public String getAsText() { Category c = …

16
Spring MVC(@ResponseBody)で応答コンテンツタイプを設定する人
私は注釈付きのSpring MVC Java Webアプリケーションを突堤Webサーバー(現在はMaven Jetty Plugin)で実行しています。 文字列ヘルプテキストだけを返す1つのコントローラーメソッドでAJAXサポートを実行しようとしています。リソースはUTF-8エンコーディングであり、文字列もそうですが、サーバーからの応答には content-encoding: text/plain;charset=ISO-8859-1 ブラウザが送信したときでも Accept-Charset windows-1250,utf-8;q=0.7,*;q=0.7 どういうわけか春のデフォルト構成を使用しています このBeanを構成に追加するためのヒントを見つけましたが、エンコーディングをサポートしておらず、代わりにデフォルトのBeanが使用されているため、使用されていないと思います。 <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <property name="supportedMediaTypes" value="text/plain;charset=UTF-8" /> </bean> 私のコントローラーコードは(この応答タイプの変更は私には機能しないことに注意してください): @RequestMapping(value = "ajax/gethelp") public @ResponseBody String handleGetHelp(Locale loc, String code, HttpServletResponse response) { log.debug("Getting help for code: " + code); response.setContentType("text/plain;charset=UTF-8"); String help = messageSource.getMessage(code, null, loc); log.debug("Help …

7
@RequestParamでリストをバインドする
私はこのようにフォームからいくつかのパラメータを送信しています: myparam[0] : 'myValue1' myparam[1] : 'myValue2' myparam[2] : 'myValue3' otherParam : 'otherValue' anotherParam : 'anotherValue' ... 次のようなパラメータを追加することで、コントローラメソッドのすべてのパラメータを取得できることを知っています。 public String controllerMethod(@RequestParam Map<String, String> params){ .... } パラメータmyParam [](他のパラメータではない)をリストまたは配列(インデックスの順序を維持するもの)にバインドしたいので、次のような構文を試しました。 public String controllerMethod(@RequestParam(value="myParam") List<String> myParams){ .... } そして public String controllerMethod(@RequestParam(value="myParam") String[] myParams){ .... } しかし、それらのいずれもmyParamsをバインドしていません。マップに値を追加しても、paramsをバインドできません。 public String controllerMethod(@RequestParam(value="myParam") Map<String, String> params){ …

8
Spring MVC @PathVariable
@PathVariableSpring MVC で使用する際の簡単な説明とサンプルを教えてもらえますか?URLの入力方法を含めてください。 jspページを表示するための正しいURLを取得するのに苦労しています。ありがとう。
125 spring-mvc 

5
Spring MVCコントローラーへのGETリクエストで日付パラメーターを受け入れる方法は?
YYYY-MM-DD形式の日付をSpring Controllerに送信するGETリクエストがあります。コントローラコードは次のとおりです。 @RequestMapping(value="/fetch" , method=RequestMethod.GET) public @ResponseBody String fetchResult(@RequestParam("from") Date fromDate) { //Content goes here } Firebugで確認しているため、リクエストは正しく送信されます。エラーが発生します: HTTPステータス400:クライアントから送信されたリクエストは構文的に正しくありませんでした。 コントローラーにこの形式の日付を受け入れさせるにはどうすればよいですか?助けてください。何が悪いのですか?
122 java  spring  date  spring-mvc 

7
Spring MVCのDelegatingFilterProxyのポイントは何ですか?
私のSpring MVCアプリにこれが見られますweb.xml: <filter> <filter-name>springSecurityFilterChain</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> </filter> なぜそこにあるのか、そしてそれが実際に必要かどうかを理解しようとしています。 私はこの説明をSpringドキュメントで見つけましたが、それは私がそれを理解するのに役立ちません: このコンポーネントは、で定義されたサーブレットweb.xmlとSpringで定義されたコンポーネントの間の「接着剤」であることが示唆されているようapplicationContext.xmlです。 7.1 DelegatingFilterProxy サーブレットフィルターを使用する場合は、明らかにそれらをで宣言する必要がありますweb.xml。そうしないと、サーブレットコンテナーによって無視されます。Spring Securityでは、フィルタークラスはアプリケーションコンテキストで定義されたSpring Beanでもあるため、Springの豊富な依存性注入機能とライフサイクルインターフェースを利用できます。SpringはとアプリケーションコンテキストDelegatingFilterProxy間のリンクを提供しweb.xmlます。 DelegatingFilterProxyを使用すると、web.xmlファイルに次のようなものが表示されます。 <filter> <filter-name>myFilter</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> </filter> <filter-mapping> <filter-name>myFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> フィルターは実際にはDelegatingFilterProxyであり、実際にフィルターのロジックを実装するクラスではないことに注意してください。どのようなDelegatingFilterProxy行いは、Springアプリケーションコンテキストから取得された豆を通過フィルタのメソッドを委譲です。これにより、BeanはSpring Webアプリケーションのコンテキストライフサイクルサポートと構成の柔軟性を活用できます。Beanは実装javax.servlet.Filterする必要があり、filter-name要素と同じ名前である必要があります。詳細については、DelegatingFilterProxyのJavadocを参照してください それで、これをから取り出した場合web.xml、どうなりますか?サーブレットがSpringコンテナと通信できなくなりますか?**

5
空のRequestParam値にdefaultValueを使用させることは可能ですか?
次のようなリクエストマッピングがある場合: @RequestMapping(value = "/test", method = RequestMethod.POST) @ResponseBody public void test(@RequestParam(value = "i", defaultValue = "10") int i) { } そして、このリクエストを次のように呼び出します: http://example.com/test?i= エラーメッセージが表示される タイプ「java.lang.String」の値をタイプ「int」に変換できませんでした。ネストされた例外はjava.lang.NumberFormatException:入力文字列の場合: "" ' これを解決するには、JavaScriptクライアントが空のパラメータを送信しないようにするか、文字列値を受け入れ、それらが空白でないことが判明した場合にのみ解析します。 更新:春のそれ以降のバージョンでは、本来望ましい動作が実装されています。 私はこれを春の4.3.5でテストしたところ、動作が実際にはnull値をデフォルト値に変換することがわかりましたNumberFormatException。私の元のマッピングは正常に動作します。 この動作の変更が行われた春のバージョンはわかりません。
120 java  spring  spring-mvc 

9
Spring MVCのコントローラーアクションから外部URLにリダイレクトする
次のコードがユーザーをプロジェクト内のURLにリダイレクトしていることに気づきました。 @RequestMapping(method = RequestMethod.POST) public String processForm(HttpServletRequest request, LoginForm loginForm, BindingResult result, ModelMap model) { String redirectUrl = "yahoo.com"; return "redirect:" + redirectUrl; } 一方、以下は意図したとおりに正しくリダイレ​​クトされますが、http://またはhttps://が必要です @RequestMapping(method = RequestMethod.POST) public String processForm(HttpServletRequest request, LoginForm loginForm, BindingResult result, ModelMap model) { String redirectUrl = "http://www.yahoo.com"; return "redirect:" + redirectUrl; } 有効なプロトコルが含まれているかどうかに関係なく、指定されたURLに常にリダイレクトして、ビューにリダイレクトしないようにしたい。どうやってやるの? おかげで、
118 java  spring  jsp  spring-mvc 

9
SpringでREST APIのバージョン管理を行う方法は?
Spring 3.2.xを使用してREST APIバージョンを管理する方法を検索してきましたが、メンテナンスが簡単なものは見つかりませんでした。最初に私が抱えている問題を説明し、次に解決策を説明します...しかし、ここで車輪を再発明するのかどうか疑問に思います。 Acceptヘッダーに基づいてバージョンを管理したいと思います。たとえば、リクエストにAcceptヘッダーが含まれている場合、application/vnd.company.app-1.1+jsonSpring MVCがこれをこのバージョンを処理するメソッドに転送するようにします。また、APIのすべてのメソッドが同じリリースで変更されるわけではないので、各コントローラーに移動して、バージョン間で変更されていないハンドラーを変更する必要はありません。また、Springは既に呼び出すメソッドを検出しているため、コントローラー自体で使用するバージョンを判別するロジックは必要ありません(サービスロケーターを使用)。 ハンドラーがバージョン1.0で導入され、v1.7で変更されたバージョン1.0から1.8のAPIを取り上げたので、これを次のように処理します。コードがコントローラー内にあり、ヘッダーからバージョンを抽出できるコードがいくつかあると想像してください。(Springでは以下は無効です) @RequestMapping(...) @VersionRange(1.0,1.6) @ResponseBody public Object method1() { // so something return object; } @RequestMapping(...) //same Request mapping annotation @VersionRange(1.7) @ResponseBody public Object method2() { // so something return object; } 2つのメソッドに同じRequestMappingアノテーションがあり、Springがロードに失敗するため、これはSpring では不可能です。アイデアは、VersionRangeアノテーションがオープンまたはクローズドバージョン範囲を定義できるというものです。最初の方法はバージョン1.0から1.6まで有効ですが、2番目の方法はバージョン1.7以降(最新バージョン1.8を含む)で有効です。誰かがバージョン99.99に合格することを決めた場合、このアプローチはうまくいかないことを知っていますが、それは私が共存しても問題ありません。 さて、春はどのように機能するかを真剣にやり直さなければ上記は不可能なので、ハンドラーをリクエストに一致させる方法をいじくり回すこと、特に自分自身を書くことを考えていました ProducesRequestConditionでそこにバージョン範囲を持たせることを考えていました。例えば コード: @RequestMapping(..., produces = "application/vnd.company.app-[1.0-1.6]+json) @ResponseBody public Object method1() { …

18
春のブーツで残りのベースURLを設定するにはどうすればよいですか?
私は単一の春のブートプロジェクトでmvcと休憩を混合しようとしています。 すべての残りのコントローラー(例:example.com/api)のベースパスを1か所に設定したい(@RequestMapping('api/products')代わりに、で各コントローラーに注釈を付けたくありません)@RequestMapping('/products')。 MVCコントローラーは、example.com / whateverからアクセスできる必要があります 出来ますか? (私はSpring Data Restを使用せず、Spring MVCのみを使用しています)

2
REST 4サービスに対するSpring 4とJersey
Spring 4.0.6バージョンで新しいアプリケーションを作成する予定です。「XML」または「JSON」を返すことができるコントローラを使用します。前のプロジェクトでは、JAX-RS APIを使用して、RESTをサポートするSpringでJerseyを正常に実装しましたが、シニアからいくつかの記事と提案を読んだ後、Springはかなり良いRESTサポートを提供していると述べました。 JAX-RSとJerseyを使用せずにSpring RESTサポートを使用する場合に本当に混乱したポイントのいくつかは次のとおりです。 Spring MVCでマーシャリングとアンマーシャリングを行う方法 マーシャリングまたはアンマーシャリングのために、jax-rsを使用する必要がありますか? マーシャリングとアンマーシャリングがSpringによって自動的に処理される場合、xmlRootElementsはどのように認識されますか。 SpringがRESTの非常に優れたサポートを証明しているのに、私はまだ混乱していますが、なぜ人々はまだJersey with RESTを使用しているのですか?本当に詳しく知りたいです。 何か間違ったことを言ったら無視してください。例による説明は本当に役に立ちます。 前もって感謝します!!

20
Spring MVCテストで「循環ビューパス」例外を回避する方法
コントローラの1つに次のコードがあります。 @Controller @RequestMapping("/preference") public class PreferenceController { @RequestMapping(method = RequestMethod.GET, produces = "text/html") public String preference() { return "preference"; } } 私は単に次のようにSpring MVCテストを使用してそれをテストしようとしています: @ContextConfiguration @WebAppConfiguration @RunWith(SpringJUnit4ClassRunner.class) public class PreferenceControllerTest { @Autowired private WebApplicationContext ctx; private MockMvc mockMvc; @Before public void setup() { mockMvc = webAppContextSetup(ctx).build(); } @Test public void circularViewPathIssue() …

4
タイプWebMvcConfigurerAdapterは廃止されました
Spring MVCバージョンに移行するだけです5.0.1.RELEASEが、突然EclipseでSTS WebMvcConfigurerAdapterが非推奨としてマークされます public class MvcConfig extends WebMvcConfigurerAdapter { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/resources/**").addResourceLocations("/resources/"); // to serve static .html pages... registry.addResourceHandler("/static/**").addResourceLocations("/resources/static/"); } .... } どうすればこれを削除できますか?
116 java  spring  spring-mvc 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.