Java 返回字符串而不是在wicket中呈现页面
我的Java应用程序似乎遇到了问题 所以我有一个wicket web应用程序,我有一个应用程序类,它有一些挂载的URL。我在其中一个URL中也有一个小程序。问题是,当我加载小程序时,该小程序向我发送post请求到小程序参数中指定的url,并希望小程序返回字符串。所以基本上,它希望挂载的url返回一个字符串,在wicket中,我猜它只是试图将url呈现到网页中,而这不是我想要的。我想我必须重写网页中的一个方法还是什么 现在我对wicket还很陌生,所以我真的不知道该怎么办。例如,我使用Spring制作了相同的软件,我可以使用Java 返回字符串而不是在wicket中呈现页面,java,string,url,wicket,mount,Java,String,Url,Wicket,Mount,我的Java应用程序似乎遇到了问题 所以我有一个wicket web应用程序,我有一个应用程序类,它有一些挂载的URL。我在其中一个URL中也有一个小程序。问题是,当我加载小程序时,该小程序向我发送post请求到小程序参数中指定的url,并希望小程序返回字符串。所以基本上,它希望挂载的url返回一个字符串,在wicket中,我猜它只是试图将url呈现到网页中,而这不是我想要的。我想我必须重写网页中的一个方法还是什么 现在我对wicket还很陌生,所以我真的不知道该怎么办。例如,我使用Spring
@RequestMapping(“/url”)
映射url,并使用@ResponseBody
将返回类型更改为string。这可能是个愚蠢的问题,但我就是找不到解决的办法。我已经阅读了很多wicket文档,并试图找到类似的问题,但没有发现任何东西
编辑:所以我必须能够读取小程序发送的POST请求参数,并将字符串发送回小程序。我不知道小程序是如何工作的,所以我只知道它向某个地址发送一个带有属性的post请求,并多次执行
谢谢
Samu您必须装载一个自定义的
资源
:
mountResource("myStringResource", customResourceReference);
关于自定义资源和装载它们,您可以在此处阅读:
下一章。您必须装载一个自定义
资源
:
mountResource("myStringResource", customResourceReference);
关于自定义资源和装载它们,您可以在此处阅读:
下一章。如另一个答案所述,您可以使用自定义资源来完成此操作 但是,通过创建
WebPage
的子类并覆盖renderPage
方法,您也可以或多或少地获得您在问题中描述的内容:
public class TextPage extends WebPage {
@Override
public final void renderPage() {
WebResponse response = (WebResponse) getResponse();
response.setContentType("text/plain");
response.write("Hello World!");
}
}
当然,正如您在问题中提到的,您还希望获取小程序发送的POST参数,并根据这些参数生成响应文本,而不仅仅是使用常量字符串
您可以从请求中获取以下参数:
Request request = getRequest();
IRequestParameters postParameters = request.getPostParameters();
StringValue testParam = postParameters.getParameterValue("test");
String testParamValue = testParam.toString();
所有这些都在某种程度上绕过了Wicket通常的处理方式,因为Wicket试图封装对请求和响应的访问,这样您就不必直接处理它们,但这可能适合您的情况。如另一个答案中所述,您可以使用自定义资源来完成此操作 但是,通过创建
WebPage
的子类并覆盖renderPage
方法,您也可以或多或少地获得您在问题中描述的内容:
public class TextPage extends WebPage {
@Override
public final void renderPage() {
WebResponse response = (WebResponse) getResponse();
response.setContentType("text/plain");
response.write("Hello World!");
}
}
当然,正如您在问题中提到的,您还希望获取小程序发送的POST参数,并根据这些参数生成响应文本,而不仅仅是使用常量字符串
您可以从请求中获取以下参数:
Request request = getRequest();
IRequestParameters postParameters = request.getPostParameters();
StringValue testParam = postParameters.getParameterValue("test");
String testParamValue = testParam.toString();
所有这些都在某种程度上绕过了Wicket通常的处理方式,因为Wicket试图将对请求和响应的访问封装起来,这样您就不必直接处理它们,但这可能适合您的情况。我真的必须使用自定义资源吗?我正在考虑在.java类中添加类似的内容,该类扩展了WebPage
WebResponse=(WebResponse)getRequestCycle().getResponse();response.setContentType(“文本/普通”);响应。写入(responseToClient);getRequestCycle().setResponse(响应);response.close()代码>你不必这么做,但我认为这是应该做的。如果您想将页面呈现为文本并至少使用Wicket 6.7.0,您可以尝试:我真的必须使用自定义资源吗?我正在考虑在.java类中添加类似的内容,该类扩展了WebPageWebResponse=(WebResponse)getRequestCycle().getResponse();response.setContentType(“文本/普通”);响应。写入(responseToClient);getRequestCycle().setResponse(响应);response.close()代码>你不必这么做,但我认为这是应该做的。如果您想将页面呈现为文本并至少使用Wicket 6.7.0,您可以尝试:谢谢,这非常有用,解决了我的问题。当我有时间时,我可能会尝试使用该自定义资源,但是覆盖渲染会有所帮助!谢谢@donthanke,这真的很有帮助,解决了我的问题。当我有时间时,我可能会尝试使用该自定义资源,但是覆盖渲染会有所帮助!谢谢你,唐