2014-01-24 23 views
2

我正在使用Tapestry5.3。我有一个动态的web项目(项目名称:测试)与test.tml和test.java。获取没有HTML标记的tml页面输出

Test.tml

<!DOCTYPE html> 
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd" 
     xmlns:p="tapestry:parameter"> 

<head> 
</head> 
<body> 
${stringValue} 
</body> 
</html> 

Test.java

public String getGenerateJson() { 
return "welcome"; 
} 

我有一个更加动态的Web项目(项目名称:测试2)与test2.tml和test2.java。这两个项目都运行到我的Tomcat服务器中。

从test2.java,我建立了一个http连接test.java,用于在test2.java中获取olny test.java返回值(welcome)。

Test2.java

final GetData data = new HttpGetData(); 
final String str = data.getContent("http://10.0.1.62:8080/Test/test"); 
System.out.println("String: " + str); 

输出:

字符串:

<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head><link type="text/css" rel="stylesheet" href="/test/assets/1b4371c8cdb7af3/core/default.css"/><link type="text/css" rel="stylesheet" href="/test/assets/1b4371c8cdb7af3/jquery/themes/ui-lightness/jquery-ui-1.8.15.custom.css"/><meta content="Apache Tapestry Framework (version 5.3.1)" name="generator"/></head><body> 
welcome 
</body></html> 

但我得到的输出这样的。

有机会得到test.java的欢迎。请给我你的宝贵建议或想法,以实现这一目标。

回答

1

最简单的解决方案是从页面的onActivate事件返回StreamResponse。你不需要一个模板(.tml)来做到这一点。

Object onActivate(EventContext context) { 
    return new TextStreamResponse("text/plain", "welcome"); 
} 

由于纯文本不是一个很好的解决方案,你可能会想使用JSON代替。

Object onActivate(EventContext context) { 
    JSONObject json = new JSONObject("greeting", "welcome"); 
    return new TextStreamResponse("application/json", json.toCompactString()); 
} 

用于创建挂毯宁静的web服务的一个简单的方法,你可能要考虑tapestry-resteasy