2012-04-16 3 views

ответ

9

Просто используйте простой HTML <form> вместо JSF <h:form>. JSF <h:form> отправляет по умолчанию запрос POST на URL-адрес текущего идентификатора вида и вызывает по умолчанию FacesServlet. Это не позволяет вам изменять URL-адрес или метод действия формы. Простой HTML <form> позволяет указать другой URL-адрес и, при необходимости, также метод.

Следующий пример стартового посылает запрос на поиск в Google:

<form action="http://google.com/search"> 
    <input type="text" name="q" /> 
    <input type="submit" /> 
</form> 

Обратите внимание, что вам не нужно использовать компоненты JSF для входов/кнопок, а также. Можно использовать <h:inputText> и т. Д., Но значения не будут установлены в соответствующем компоненте бэкэнда. Накладные расходы компонента JSF тогда не нужны.

Если вы хотите, например, чтобы послать запрос POST в сервлет, который отображается в URL-схеме /foo/* и вам необходимо отправить параметр запроса с именем bar, то вам необходимо создать форму следующим образом :

<form action="#{request.contextPath}/foo" method="post"> 
    <input type="text" name="bar" /> 
    <input type="submit" /> 
</form> 

Таким образом doPost() метод сервлета будет вызван:

@Override 
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    String bar = request.getParameter("bar"); 
    // ... 
} 
+0

спасибо за информацию !! Что объясняет его! – user840930

-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> 

Смежные вопросы