阅读输入类型=“隐藏”与泽西

时间:2012-02-23 10:22:42

标签: java html google-app-engine jsp jersey

.. 您好,

我在.jsp页面中有一个隐藏的输入:

<form ... method="post">
  ...
  <input type="hidden" name="tc" value="true"/>
  ...
</form>

在服务器端(全部在GAE中),java代码就是这样......

@POST
@Path("after")
public Response afterTC(
                    ...
        @FormParam("tc") boolean tc
                    ...
) throws URISyntaxException {
        return Response.ok("OK!").build();
}

该方法被完美地调用,但是...在调试并尝试恢复tc值时...它总是错误的...我怎样才能得到正确的tc值?不知道怎么做=(

谢谢!

3 个答案:

答案 0 :(得分:3)

你的示例代码对我有用(也就是说,我把基本相同的东西放在一起,tc是真的)。​​

我确信问题不在于输入类型是隐藏的 - 从处理代码的角度来看,隐藏的输入看起来与任何其他表单输入完全相同。它们都是通过字符串名称和字符串值发送的...在这种情况下,值会在幕后转换为布尔值。

在你的情况下,我会做的就像Pavel建议的那样 - 尝试@FormParam("tc") String tc并确定通过什么字符串值。这只是一种调试技术;一旦你弄清楚出了什么问题并修复它,就可以将它切换回布尔值。

如果是我,我的第一个猜测将是一个错字 - 如果输入的“名称”与您给予FormParam的名称不同,那么它将会显示为假。

答案 1 :(得分:0)

您是否尝试使用布尔而不是布尔值?布尔值应该在这种情况下起作用。

答案 2 :(得分:0)

您是否可能没有提交包含此<input>的表单?

我的意思是如果你有这样的东西:

<form>
    <input type="hidden" name="tc" value="true"/>
</form>
<form>
    <input type="submit"/>
</form>

有两种不同的形式,只有第二种形式(没有“tc”输入)被提交。