使用带有提交按钮的表单从 facelets 文件调用 servlet 的正确方法是什么?是否需要特定的表格?
问问题
6941 次
2 回答
10
只需使用纯 HTML<form>
而不是 JSF <h:form>
。默认情况下,JSF<h:form>
向当前视图 ID 的 URL 发送 POST 请求,并默认调用FacesServlet
. 它不允许您更改表单操作 URL 或方法。纯 HTML<form>
允许您指定不同的 URL,如果需要,还可以指定方法。
以下启动示例向 Google 发送搜索请求:
<form action="http://google.com/search">
<input type="text" name="q" />
<input type="submit" />
</form>
请注意,您也不需要为输入/按钮使用 JSF 组件。可以使用<h:inputText>
等,但不会在关联的支持 bean 中设置值。这样就不需要 JSF 组件开销。
例如,当您想向映射到 URL 模式的 servlet 发送 POST 请求/foo/*
并且您需要发送带有 name 的请求参数时bar
,您需要创建如下表单:
<form action="#{request.contextPath}/foo" method="post">
<input type="text" name="bar" />
<input type="submit" />
</form>
这样doPost()
将调用 servlet 的方法:
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String bar = request.getParameter("bar");
// ...
}
于 2012-04-16T15:13:51.817 回答
-1
您可以通过以下方式从 jsf 调用:
<h:outputText value="Download" />
<h:outputLink value="#{request.contextPath}/files" id="btnDownload1" styleClass="redButton">
<h:outputText value="FILESDOWNLOAD" />
</h:outputLink>
</h:panelGrid>
然后在 web.xml 中:
<servlet>
<servlet-name>files</servlet-name>
<servlet-class>com.Download</servlet-class>
于 2016-08-29T11:37:53.700 回答