为什么JSF在空表单中添加隐藏字段?

时间:2013-06-08 10:20:56

标签: jsf

所以这是我的观点:

<!DOCTYPE html>
<html xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core">
<h:head>
    <title>Welcome</title>
</h:head>
<h:body>
    <h:form id="myForm" prependId="false">
    </h:form>
</h:body>
</html>

这是html输出的来源:

<!DOCTYPE html>
<html>
    <head>
        <title>Welcome</title>
     </head>
<body>
    <form id="myForm" name="myForm" method="post" action="/6june/index.xhtml"
                  enctype="application/x-www-form-urlencoded">
        <input type="hidden" name="myForm" value="myForm" />
        <input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState"
value="-6073854252721841133:2030478025710553343" autocomplete="off" />
    </form>
</body>
</html>

那为什么我会得到2个隐藏的输入字段?这个价值是多少?

问候。

1 个答案:

答案 0 :(得分:0)

这两个隐藏字段由h:form的渲染器添加。它们随每个JSF请求一起发送,并且在执行回发(表单提交)时由JSF用于恢复其视图。 javax.faces.ViewState隐藏字段的值也用作CSRF令牌。