我有简单的 JSF 表单:
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:t="http://myfaces.apache.org/tomahawk" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core">
<ui:composition template="layout.jsp">
<ui:define name="title">Редактирование шаблона</ui:define>
<ui:define name="content">
<t:div rendered="#{template.hasErrors}">
#{template.errorText}
</t:div>
<t:div rendered="#{template.hasMessage}">
#{template.messageText}
<p>
<a href="/templates.jsf">Все шаблоны</a>
</p>
</t:div>
<t:div rendered="#{template.canEdit}">
<h:form>
Name: <h:inputText value="#{template.name}"/> <br/>
Content Type: <h:inputText value="#{template.contentType}"/> <br/>
Content: <h:inputTextarea value="#{template.content}"/> <br/>
Description: <h:inputTextarea value="#{template.description}"/> <br/>
<h:commandButton value="Сохранить" action="#{template.submit}">
</h:commandButton>
</h:form>
</t:div>
</ui:define>
</ui:composition>
</html>
一切正常,但是当我尝试将此页面与查询字符串参数(template.jsf?Id=5)一起使用时,然后 sumbit 命令按钮 - 页面被重定向到 template.jsf(没有查询字符串参数。很明显-- 表单动作属性总是=“template.jsf”,即使是查询字符串参数也被传递)。所以我不能用指定的查询字符串参数调用 TemplateBean 的提交方法。