2014-01-24 25 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