使用带有提交按钮的表单从facelets文件调用servlet的正确方法是什么?是否需要特定的表格?
答案 0 :(得分: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组件开销。
例如,如果您希望将POST请求发送到映射到/foo/*
的URL模式的servlet,并且您需要发送名为bar
的请求参数,那么您需要按如下方式创建表单:
<form action="#{request.contextPath}/foo" method="post">
<input type="text" name="bar" />
<input type="submit" />
</form>
这样将调用servlet的doPost()
方法:
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String bar = request.getParameter("bar");
// ...
}
答案 1 :(得分:-1)
您可以从jsf:
以下方式致电
composer --no-update require dmstr/yii2-adminlte-asset:*
然后在web.xml中:
<h:outputText value="Download" />
<h:outputLink value="#{request.contextPath}/files" id="btnDownload1" styleClass="redButton">
<h:outputText value="FILESDOWNLOAD" />
</h:outputLink>
</h:panelGrid>