Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 返回字符串而不是在wicket中呈现页面_Java_String_Url_Wicket_Mount - Fatal编程技术网

Java 返回字符串而不是在wicket中呈现页面

Java 返回字符串而不是在wicket中呈现页面,java,string,url,wicket,mount,Java,String,Url,Wicket,Mount,我的Java应用程序似乎遇到了问题 所以我有一个wicket web应用程序,我有一个应用程序类,它有一些挂载的URL。我在其中一个URL中也有一个小程序。问题是,当我加载小程序时,该小程序向我发送post请求到小程序参数中指定的url,并希望小程序返回字符串。所以基本上,它希望挂载的url返回一个字符串,在wicket中,我猜它只是试图将url呈现到网页中,而这不是我想要的。我想我必须重写网页中的一个方法还是什么 现在我对wicket还很陌生,所以我真的不知道该怎么办。例如,我使用Spring

我的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类中添加类似的内容,该类扩展了WebPage
WebResponse=(WebResponse)getRequestCycle().getResponse();response.setContentType(“文本/普通”);响应。写入(responseToClient);getRequestCycle().setResponse(响应);response.close()你不必这么做,但我认为这是应该做的。如果您想将页面呈现为文本并至少使用Wicket 6.7.0,您可以尝试:谢谢,这非常有用,解决了我的问题。当我有时间时,我可能会尝试使用该自定义资源,但是覆盖渲染会有所帮助!谢谢@donthanke,这真的很有帮助,解决了我的问题。当我有时间时,我可能会尝试使用该自定义资源,但是覆盖渲染会有所帮助!谢谢你,唐