最終年度のプロジェクト (Maven + Hibernate + Spring + Tapestry) で Tapestry に関連する問題が発生しています。誰かがそれを手伝ってくれることを願っています。サービスレイヤーでXMLファイルを生成します(その内容は、作成したカスタム形式のMySql DBデータです)(試してみたところ、適切に生成されました:動作しています)。Junitテストからテストしました。問題は、Tapestry を使用して、ビュー レイヤーから機能させることができないことです。
私はこれを試しました が、ファイルがまだ存在しないためだと思います。ユーザーが「 XMLのダウンロード」リンクをクリックすると、動的に生成されます。
これが私のソース コードです (ユーザーはこのページへのリンクをクリックします)。ページの POJO ( xmlService.exportXmlは、XML ファイルを作成するサービス層からのメソッドです):
public class DownloadAll {
@Component
private Form xmlDownloadForm;
@Property
private File xmlFile;
@Property
@SessionState(create=false)
private UserSession userSession;
@Inject
private XmlService xmlService;
public StreamResponse onSubmit() {
xmlFile = xmlService.exportXml(userSession.getUserProfileId());
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(Calendar.getInstance().getTime());
InputStream input = DownloadAll.class.getResourceAsStream("exportedData-"
+ userSession.getLoginName() + timeStamp + ".xml");
return new XMLAttachment(input);
}
}
そして、これはページテンプレートです:
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd"
t:type="Layout" t:pageTitle="title"
xmlns:p="tapestry:parameter"
t:menuExplanation="menuExplanation">
<form t:type="Form" t:id="xmlDownloadForm">
<input type="submit" value="${message:download}"/>
</form>
</html>
誰かがそれを機能させる方法を知っていますか? ありがとうございます。
編集:フォームを送信するとファイルが生成されます (フォルダーに表示されます)が、ファイルは提供されません。代わりに次のエラーが表示されます。
org.apache.tapestry5.runtime.ComponentEventException クラス es.udc.decompras.web.pages.xml.util.XMLAttachment は変換されており、直接インスタンス化できない可能性があります。
XMLAttachment は、このリンクの JPEGAttachment.javaと同じです。ソース コードは次のとおりです。
public class XMLAttachment extends AttachmentStreamResponse {
public XMLAttachment(InputStream is, String args) {
super(is, args);
this.contentType = "application/xml";
this.extension = "xml";
}
public XMLAttachment(InputStream is) {
super(is);
this.contentType = "application/xml";
this.extension = "xml";
}
}