エルコム 田中
tanak****@elcom*****
2010年 6月 16日 (水) 17:10:45 JST
田中です。 日本語でのオートコンプリートが解決したのでご報告致します。 (a)日本語を入力した時に無反応だったのは文字化けしたままstartsWithで比較していたため、対応する単語が空となってしまっていたようです。 input = new String(input_sjis.getBytes("ISO8859_1"), "UTF-8"); 文字コードを変換したらちゃんとリストが表示されるようになりました。 (b) IE8で 『システム エラー: -1072896658』が出る件 WebApplicationの init()で getRequestCycleSettings().setResponseRequestEncoding("Windows-31J"); getMarkupSettings().setDefaultMarkupEncoding("Windows-31J"); を入れるとこのエラーが出るようです。『Windows-31J』が正式名称として間違っている??? ※HTMLファイルのcharsetは『Windows-31J』としています。 (c) IE8での 『wicket-autocomplete.js』 の「引数が無効です」のエラーは解決していません。 ----- 以下日本語オートコンプリート解決ソースコード------------ AutoCompleteTextField widText_torihikisakiName = new AutoCompleteTextField("widText_torihikisakiName", new PropertyModel(seibansakuseiFormVo, "torihikisakiName")){ @Override protected Iterator<String> getChoices(String input_sjis){ if (Strings.isEmpty(input_sjis)) { List<String> emptyList = Collections.emptyList(); return emptyList.iterator(); } String input = ""; try { input = new String(input_sjis.getBytes("ISO8859_1"), "UTF-8"); } catch (UnsupportedEncodingException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } List<String> choices = new ArrayList<String>(10); Locale[] locales = Locale.getAvailableLocales(); for (final Locale locale : locales) { final String country = locale.getDisplayCountry(); if (country.toUpperCase().startsWith(input.toUpperCase())) { choices.add(country); if (choices.size() == 10) { break; } } } return choices.iterator(); } }; widForm_seibanShinkisakusei.add(widText_torihikisakiName); -----------------------------------------------------------------------------------------------