2012-10-05 14 views
8

आज मैं एक HTML पृष्ठ से एक पोस्ट प्राप्त करने के लिए एक सर्वलेट का उपयोग कर रहा हूं और फिर मेरे जेएसएफ पेज पर रीडायरेक्ट कर रहा हूं।जेएसएफ

यह मेरा वास्तविक सर्वलेट है:

public class CommInServlet extends HttpServlet { 

    private String reportKey; 

     protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
     req.getSession(true).setAttribute("reportKey", req.getParameter("reportkey")); 
     req.getRequestDispatcher("main.xhtml").forward(req, resp); 
     } 

    } 

एचटीएमएल पोस्ट पेज:

<html> 
<head /> 
<body> 
<form action="Filtro" method="post"> 
<input type="text" size="120" name="reportkey" value="XXXXXXXXXXXX" /> 
<input type="submit" value="doPost" /> 
</form> 
</body> 
</html> 

यह मेरी JSF पेज (ManagedBean) के लिए सीधे पोस्ट करने के लिए संभव है? कैसे? मैं सर्वलेट को कुछ ... के लिए बदलना चाहता हूं।

उत्तर

18

निश्चित रूप से आप कर सकते हैं। अधिकांश जेएसएफ अनुरोध POST एस हैं, इसलिए यदि आप जेएसएफ पेज के पथ का उपयोग करते हैं तो आप POST अनुरोध को संभालने का इरादा रखते हैं, तो आप उस पृष्ठ द्वारा समर्थित एक प्रबंधित बीन के भीतर पैरामीटर प्राप्त कर सकते हैं या पैरामीटर प्राप्त कर सकते हैं पेज खुद

 @PostConstruct 
     public void initMyBean(){ 
     /**This map contains all the params you submitted from the html form */ 
     Map<String,String> requestParams = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap(); 
     requestParams.get("reportKey"); 
         } 

या कामयाब सेम भीतर

 @ManagedProperty(value="#{param.reportKey}") 
    String reportKey; 
    //getter and setter of course! 

विधि आप @PostConstruct साथ एनोटेट करने के बाद कामयाब सेम instantiated कर दिया गया है निष्पादित किया जाएगा है:

एक प्रबंधित सेम के भीतर

। उपर्युक्त आपको आपके प्रबंधित बीन के भीतर पहुंच प्रदान करेगा।

आप अपने पृष्ठ पहले तथापि भीतर मूल्य की जरूरत है, तो आप अपने पेज में (शीर्ष पर अधिमानतः)

 <f:metadata> 
     <f:viewParam name="reportKey" value="#{backingBean.reportKey}" required="true"/> 
    </f:metadata> 

सूचना कैसे आप अपने दृश्य के भीतर से पैरामीटर पर सत्यापन प्रदर्शन कर सकते हैं इस हो सकता है। बहुत अच्छी सुविधा।

बस सुनिश्चित करें और जेएसएफ व्यू के पथ पर अपना एचटीएमएल फॉर्म action विशेषता दें।

+0

एक दृश्य पर, आवश्यक = "सत्य" का क्या अर्थ है? – Erick

+0

@Erick 'आवश्यक =" सत्य "' यह सुनिश्चित करता है कि आपूर्ति किया गया पैरामीटर शून्य नहीं है – kolossus