弄了一个多礼拜的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功能可以极大地提升用户体验,特别是在数据动态加载方面。本文档通过一个具体的例子——级联选择框,来演示如何利用Wicket框架结合Ajax技术...
Ajax-jaulp-wicket.zip,这个项目是ApacheWicket组件和实用程序的集合。,ajax代表异步javascript和xml。它是多种web技术的集合,包括html、css、json、xml和javascript。它用于创建动态网页,其中网页的小部分在不...
Wicket是一个开源的Java Web应用程序框架,它提供了一种组件化的开发方式,使得Web应用的构建更为简单和直观。这个压缩包包含了一个Wicket的开发指南PDF文档以及一些示例项目,这些都是学习和掌握Wicket框架的重要...
开发Wicket应用可以使用Eclipse、IntelliJ IDEA等主流IDE,它们通常都有对应的Wicket插件,提供代码提示、调试等便利功能。 10. **学习资源** 如链接所示,ITEYE博客上有关于Wicket的教程,这是学习Wicket的一个...
5. **数据绑定**:Wicket 提供了模型机制,可以将组件与数据对象绑定,实现数据的自动同步。 6. **国际化**:支持多语言,通过`ResourceModel`和`.properties`文件实现。 7. **分页与排序**:Wicket 提供了`...
在Wicket 1.4.17的源码中,你可以看到框架内部的工作机制,这对于解决疑难问题、优化性能或扩展框架功能非常有帮助。例如,你可以研究Wicket如何处理页面状态管理、Ajax请求、国际化和本地化、以及组件生命周期等。...
Wicket提供了丰富的库和扩展,如Ajax支持、表格组件等,可以帮助你解决这些问题。同时,参考《Wicket中文开发指南》和在线博文中提供的示例,可以加速学习进程。 总的来说,Wicket为中文Web应用开发提供了强大而...
在本文中,我们将深入探讨Wicket框架中关于Tree组件的简单使用方法,这对于初学者来说是一份极好的学习资源。Wicket是一个强大的Java Web应用程序框架,它提供了丰富的组件库,其中包括用于显示层次结构数据的Tree...
同时,开源的性质意味着可以借鉴社区的最佳实践,了解其他开发者是如何解决实际问题的,这对于个人技能的提升和团队协作具有积极意义。 总结起来,"wicket-menu-6.5.0.zip"是一个展示Wicket框架构建菜单系统的实例...
部署Wicket应用通常是将它作为Servlet容器(如Tomcat)中的WAR文件。 综上所述,"Wicket开发指南"涵盖了Wicket框架的各个方面,从基础概念到高级特性,为开发者提供了全面的指导。通过学习和实践,你可以掌握使用...
在Wicket 1.4.7版本中,包含了一系列的jar包,这些jar包是构建和运行基于Wicket的应用程序所必需的。下面将详细解释这些jar包的作用和它们在Wicket框架中的重要性。 1. **wicket.jar**:这是Wicket的核心库,包含了...
Wicket 1.4 是一个基于Java的开源Web应用程序框架,它强调了组件化和页面的可重用性。这个框架允许开发者创建高度交互式的、动态的网页应用,而无需深入学习复杂的JavaScript或HTML。Wicket 1.4 版本是该框架的一个...
在给定的文件内容中,可以看到 Jetty 启动成功,且 Wicket 应用在 development 模式下运行,输出了警告信息提示开发者不要在生产环境中使用此模式。 4. **访问应用** 一旦服务器启动,可以通过浏览器访问 `...
总之,Wicket是一个强大的Web开发框架,它提供了组件化的编程模型和优秀的Ajax支持,适合构建交互性强、易于维护的Web应用。对于想要深入理解J2EE开发的开发者来说,学习Wicket是一个不错的选择。《Wicket开发指南》...
在 Wicket 开发中,常见的 Maven 插件包括 Wicket-Tester(用于单元测试 Wicket 组件)和 Wicket-Eclipse-Plugin(Eclipse IDE 的插件,提供代码提示和调试支持)。 6. **mvn_tmp 文件**: 这个文件名可能是临时文件...
部署后,用户可以浏览并体验各种Wicket功能的示例应用,这对于学习和理解Wicket的工作方式非常有帮助。 总结,Wicket 1.4.0提供了一种高效、易用的Web开发方式,结合`Wicket开发指南20061106.pdf`和`wicket-...
本文将基于三年的Wicket项目经验,深入探讨Wicket的关键特性和在实际开发中遇到的问题及解决方案。 1. **视图层与逻辑的分离**: Wicket的一个核心优点是视图层不包含任何动态代码,这意味着HTML模板和Java代码...
Wicket是一种现代的、面向对象的Web框架,它的核心特性包括强大的组件模型、自动的数据绑定、内置的支持AJAX等功能。 **1.4 Wicket的特性** - **1.4.1 更加纯粹的Java和OO** Wicket完全采用Java语言编写,遵循...