为了实现一个对外的json接口,仔细读了tapestry5.2的源代码,考虑了几种实现,最简便清晰的方法如下。
为json接口做一个Page, 例如命名为 JsonPage。在JsonPage里只放一个actonlink,给一个命名例如"do"
JsonPage.tml如下:
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
<t:actionlink t:id="do">do</t:actionlink>
</html>
这样外部访问json接口url可以用 http://www.yourdomain.com/jsonpage.do/xx/xxx/xx/
jsonpage.do后面的/xx/xxx/xx是参数,和标准page的参数一样格式
JsonPage里做一个方法
JSONObject onAction(Object[] params) {
...
}
在这个方法中,实现逻辑,生成JSONObject。注意这个page的onActivate(Object[] params[])的params是空,要用url里名字为t:ac的参数的值来给onActivate()的params赋值。
最后需要做一个ServletFilter里面有类似这样的代码,以使tapestry认为这是个ajax请求,否则tapestry会不能处理JSONObject onAction()。
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequestWrapper wrappedRequest=null;
if (httpRequest.getRequestURI().toLowerCase().contains("jsonpage")) {
wrappedRequest = new HttpServletRequestWrapper(httpRequest) {
public String getHeader(String name) {
if ("X-Requested-With".equals(name)) {
return "XMLHttpRequest";
}
return super.getHeader(name);
};
};
}
chain.doFilter(wrappedRequest!=null?wrappedRequest:request, response);
}
分享到:
相关推荐
Tapestry API提供了`Component`接口和相关的实现类,例如`Page`和`ComponentTemplate`,用于构建这些组件。 2. **MVC架构** 在Tapestry中,模型、视图和控制器的概念得到了清晰的体现。`Model`代表数据和业务逻辑...
虽然Tapestry不是严格意义上的MVC(模型-视图-控制器)框架,但它实现了类似的概念。每个组件都可以看作是 MVC 的一个单元,有自己的模型、视图和控制逻辑,这样可以有效地分离业务逻辑和显示逻辑。 3. **声明式...
10. **Tapestry-internal-test**: 内部测试套件,用于验证Tapestry框架的内部工作原理和功能,这对于理解Tapestry的实现机制非常有帮助。 通过研究这些源码和API,开发者不仅可以掌握Tapestry的基本用法,还能深入...
1. **组件类**:定义组件的Java类,实现其逻辑。 2. **模板文件**:使用HTML和特殊的Tapestry标记来描述组件的外观。 3. **属性**:声明组件的输入和输出参数。 4. **事件**:定义组件如何响应用户操作或其他组件的...
在IT行业中, Tapestry 是一个基于Java的开源Web应用程序...具体实现通常涉及编写服务配置、组件事件处理、元数据注解等代码,而`tapestrySSO`可能包含了一些具体的示例代码,用于演示如何在Tapestry 5.3.5中实现SSO。
4. **JSON 数据交换**:Tapestry 和 ExtJS 都支持 JSON 格式的数据交换。Tapestry 可以通过其服务端组件暴露 JSON API,而 ExtJS 则通过 AJAX 请求获取并解析这些数据,更新视图。 5. **事件绑定**:Tapestry 有其...
然而,随着时间的推移,Tapestry4展现出的独特优势逐渐显现,尤其是其通过Hivemind提供的IoC和DI(Dependency Injection)机制,使得开发者能够根据具体需求重构Tapestry4的组件,从而实现更为个性化、符合特定场景的...
这使得开发者能够轻松地实现动态交互效果,如表单验证和分页。 2. **国际化和本地化**:框架内置了强大的I18N支持,允许应用轻松地为不同地区提供本地化内容。 3. **错误处理和调试**:Tapestry 3提供了一套强大的...
Tapestry5最新中文教程.doc 作者 Renat Zubairov & Igor Drobiazko译者 沙晓兰 发布于 2008年7月2日 下午9时30分 社区 Java 主题 Web框架 ----------------------------------------- Tapestry5.1实例教程.pdf ...
书中会讲解如何创建模型类、定义服务接口和实现、以及如何使用模板来设计视图。 在深入探讨Tapestry 4的编程模型时,读者将学习如何使用Ivy或Maven来管理依赖,理解配置文件的结构,以及如何编写自定义组件。此外,...
开发者通常不会直接实现这些接口,而是继承如`AbstractComponent`或`BaseComponent`这样的基础类来创建自定义组件。`IRequestCycle`、`IMarkupWriter`和`IEngine`是三个重要的接口,它们分别处理请求周期管理、HTML...
"tapestry学习入门资料" Tapestry 是一个开源的基于 servlet 的应用程序框架,它使用组件对象模型来创建动态的、交互的 web 应用。 Tapestry 使得 Java 代码与 HTML 完全分离,利用这个框架开发大型应用变得...
本书以循序渐进的方式,从Tapestry框架技术的基本概念入手,讲解Tapestry框架在J2EE Web应用程序中的整体架构实现。使读者在学习如何使用Tapestry框架技术的同时,还能够获得在J2EE Web应用程序中应用Tapestry框架的...
6. **切换皮肤**:在Tapestry中,可以轻松实现皮肤的切换,这通常涉及到更换CSS样式表和可能的图片资源。开发者可以通过配置文件或程序逻辑来改变应用的外观,满足不同用户需求。 7. **自主分页**:Tapestry提供了...
Tapestry是一个开源的Web应用框架,它颠覆了J2EE Web应用程序表现层技术的传统思维,实现了面向对象编程的表现层技术。Tapestry的作者是董黎伟,毕业于西南交通大学,他是Sun认证Java程序员,曾在JavaEye论坛设立...
7. **其他依赖库**:如Apache Commons、SLF4J日志框架、Jackson或Gson用于JSON处理等,这些库为Tapestry提供了丰富的功能扩展。 使用Tapestry 5.4.1 的开发者通常会把这些jar文件添加到项目的类路径中,以启动和...
此外,书中还会涉及依赖注入(Dependency Injection,DI)和控制反转(Inversion of Control,IoC)的概念,这是Tapestry 5实现松耦合和可测试性的关键。读者将学习如何使用Tapestry的IoC容器来管理对象的生命周期和...
这个框架的核心理念是将用户界面与业务逻辑分离,通过组件化的思想实现页面的构建,从而简化了开发流程。Tapestry 5.2.6 jar包包含了框架的最新版本,适用于那些寻求稳定性和性能提升的开发者。 Tapestry框架的主要...
最后,`Login.java`是Tapestry页面的后端实现,继承自`BasePage`。这个类定义了与`.page`文件中相同的抽象方法,用于获取和设置页面属性。`login`方法是一个控制器方法,负责处理表单提交事件。在这里,它验证用户名...