`

对于如何解决wicket Ajax 自动提示应用中出现的乱码问题!

阅读更多

弄了一个多礼拜的wicket框架,在这段期间有遇到有很多的问题,因为之前很少用到eclipse,之前都是用的Myeclipse ,netBean,JBuilder等其它的IDE工具,所以会经常出现一些小问题,像引用外部包的时候不能引用包含有中文的路径,这是在运行其它开发工具的时候没有遇到的.最麻烦的是,在学习wicket ajax控件应用中,使用AutoCompleteTextField控件会出现中文乱码,只有英文测试可以通过,对于向来不愿服输的我,在这个上面也花费了不少的时间,最后问了身边的同事,也没有解决的办法.最终也就先放在一边了.对于这样的事,也只能先记在本子上,等之后有时间翻出来整理解决.今天突然想运用这一个多礼拜的wicket学习把自己原来的一个小的购物车项目用 wicket框架来整一下,想到那个自动提示功能出现乱码还没有解决,自己又拼命的在网上搜索资料,虽说在网也找到了一些相关的资料,但无非都是要在javascript代码中作手脚,但 wicket框架的JS代码都已经封装好了,如果去改它的原来的JS文件的话,那太麻烦了,况且我也不一定就认为我能改的好,所以这个方案取消.只能另选一条方案,在java代码作手脚了,想到在测试的时候在进行表单提交的时候在控制台可以输出文本框中的内容,而且不会出现乱码.这时想到了,为什么不在将在JS代码中处理的部分转移到java代码中来进行呢?也就是说,我可以在加入一个表单提交句柄的基础上来进行操作.果然效果和我预想一样,下面是原代码:下面的红色代码部分是进行更改后的结果.
AutoCompletePage .java
    
package com.sfkong.ajax.auto;

import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;

import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.form.AjaxFormSubmitBehavior;
import org.apache.wicket.extensions.ajax.markup.html.autocomplete.AutoCompleteTextField;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.util.string.Strings;

import com.sfkong.ajax.IndexPage;
public class AutoCompletePage extends WebPage {
 private String name;
 private List choices=new ArrayList(10);
 private String inputName="";
 public List getChoices() {
  return choices;
 }
 public void setChoices(List choices) {
  this.choices = choices;
 }
 public String getInputName() {
  return inputName;
 }
 public void setInputName(String inputName) {
  this.inputName = inputName;
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public AutoCompletePage() {
  super();
  this.add(new BookmarkablePageLink("back", IndexPage.class).setAutoEnable(true));
  
  Form form =new Form ("form",new CompoundPropertyModel(this)){
   @Override
   protected void onSubmit() {    
    super.onSubmit();
   }
  };
  add(form);
  
    final AutoCompleteTextField textField=new AutoCompleteTextField("ac",new PropertyModel(this,"inputName")){
   
   @Override
   protected Iterator getChoices(String input) {
       if(Strings.isEmpty(input)){
     return Collections.EMPTY_LIST.iterator();
    }
       return choices.iterator();
   }
  };
  final Label label=new Label("label",textField.getDefaultModel());
  label.setOutputMarkupId(true);
  textField.add(new AjaxFormSubmitBehavior(form,"onkeyup"){
   @Override
   protected void onError(AjaxRequestTarget arg0) {
    // TODO Auto-generated method stub
    
   }
   @Override
   protected void onSubmit(AjaxRequestTarget target) {
    Locale[] locales=Locale.getAvailableLocales();
    for (Locale locale : locales) {
     System.out.print(locale.getDisplayCountry()+",");
    }
    choices.clear();
    for (int i = 0; i < locales.length; i++) {
     final Locale locale=locales[i];
     final String country=locale.getDisplayCountry(Locale.ENGLISH);     
        if(inputName!=null){
     if(country.toUpperCase().startsWith(inputName.toUpperCase())){
      choices.add(country);
      if (choices.size()==10) {
       break;
      }
     }
     }
    }

    target.addComponent(label);

   }
  });
  
  form.add(textField);
  form.add(label);
 }
}

 
AutoCompletePage .html
<body>
<a href="IndexPage.html" wicket:id="back">[back]</a><br>
 <form wicket:id="form">
 你所得到的字符是:<span wicket:id="label"></span><br/>
  Country:
  <input type="text" wicket:id="ac" size="50"/>
 </form>
</body>
</html>
 
其实想想wicket在进行submit的时候能得到想要的结果,为什么在 JS代码部分却会出现乱码呢?
有时间的朋友可以去解答一下哦!
当然还有一个Application.因为比较简单就不提供代码了.

 

分享到:
评论

相关推荐

    wicket的ajax范例(级联选择框)

    wicket的ajax范例(级联选择框)

    Ajax-jaulp-wicket.zip

    Ajax-jaulp-wicket.zip,这个项目是ApacheWicket组件和实用程序的集合。,ajax代表异步javascript和xml。它是多种web技术的集合,包括html、css、json、xml和javascript。它用于创建动态网页,其中网页的小部分在不...

    wicket1.4.7中的jar包

    从wicket官网中下载的wicket1.4.7中jar包,对于编写wicket相关的程序有所需要的朋友可以下载

    Wicket 8.X开发文档(中文翻译+英文原版)

    Wicket应用程序的配置 4.3。HomePage类 4.4。Wicket链接 4.5。摘要 5. Wicket作为页面布局管理器 5.1。页眉,页脚,左侧菜单,内容等... 5.2。这是继承! 5.3。划分et impera! 5.4。使用wicket标记继承:扩展标记 ...

    wicket 开发指南 doc

    wicket 开发指南 比较全面的介绍wicket的使用

    wicket指南

    wicket开发指南,wicket 新型的web开发框架,现以能无逢支持jsr168/286

    apache-wicket

    Wicket has been around since 2004 and it has been an Apache project since 2007. During these years it has proved to be a solid and valuable solution for building enterprise web applications. Wicket ...

    Wicket开发指南.pdf

    Wicket开发指南 Wicket开发指南 Wicket开发指南

    wicket例子和开发指南

    wicket例子和开发指南,指南为PDF文档,例子为wicket自带例子。

    Apache Wicket Cookbook.pdf

    Using wicket:message to output localized markup 86 Overriding localized resources on a case by case basis 89 ii Table of Contents Chapter 5: Displaying Data Using DataTable 95 Introduction 95 ...

    gitblit1.8 中文修正版

    gitblit 1.8 中文修改版 解决下载中文问题 和中文目录问题 安装方法:安装原版后替换相应的文件 ...如果是apache+tomcat方式,有乱码出现,将 JkOptions 屏蔽掉,并设置tomcat URL为UTF-8 url方式。

    wicket国际化例子

    wicket国际化例子 含有wicket:message StringResourceModel 等读取properties资源文件的代码示例

    wicket文档

    wicket学习文档

    wicket 基础知识培训

    wicket 基础知识培训,主要是讲解wicket入门知识,通过和struts比较来进行讲解。

    Wicket 入门

    Wicket 入门,以及Eclipse里建立project

    wicket+spring

    wicket+spring应用,这个一个比较简单的源码,适合初学者

    wicket_mvn库

    wicket编译所需的maven库,搬运

    创建并扩展Apache_Wicket_Web应用.doc

    创建并扩展Apache_Wicket_Web应用.doc

    wicket-menu-6.5.0.zip

    wicket-menu.zip,Wicket菜单

    wicket 6.x api.chm wicket帮助文档

    wicket 6.x api.chm wicket帮助文档

Global site tag (gtag.js) - Google Analytics