2011-02-23 10 views
6

मैं एक साधारण व्यक्ति वर्ग है:अनुरोध के आधार पर JavaBeans को आबाद करने का आसान तरीका पैरामीटर

package simpleApp.entities; 

public class Person { 
    private String name; 
    private String secondname; 

    public void setSecondname(String cognome) { 
     this.secondname = cognome; 
    } 
    public String getSecondname() { 
     return secondname; 
    } 
    public void setName(String nome) { 
     this.name = nome; 
    } 
    public String getName() { 
     return name; 
    } 

} 

और एक साधारण html पृष्ठ:

<html> 
<body> 

    <form action="/simpleApp/person/" method="POST"> 
     name: <input type="text" name="name"><br> 
     second name: <input type="text" name="secondname"><br> 
     <input type="submit"> 
    </form> 

</body> 
</html> 

और एक सरल सर्वलेट:

public class Person extends HttpServlet { 
    private static final long serialVersionUID = 1L; 

    public Person() { 
    } 

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    } 

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 

     //LOOK HERE: 
     simpleApp.entities.Person p = new simpleApp.entities.Person(); 

     p.setName(request.getParameterValues("name")[0]); 
     p.setSecondname(request.getParameterValues("secondname")[0]); 

     response.sendRedirect("/simpleApp/index.html"); 
    } 

} 

क्या पैरामीटर सेटिंग स्वचालित करने का कोई तरीका है? जैसे

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     simpleApp.entities.Person p = new simpleApp.entities.Person(); 

     Magic.justSetEverything(p, request); 

//  NOT NEEDED ANYMORE!!! MUAHAHAHA more time for coffee 
//  p.setName(request.getParameterValues("name")[0]); 
//  p.setSecondname(request.getParameterValues("secondname")[0]); 

     response.sendRedirect("/simpleApp/index.html"); 
    } 
+0

यह निश्चित रूप से प्रतिबिंब एपीआई के माध्यम से किया जा सकता है, लेकिन सवाल यह है कि यदि यह इस कीमत से अधिक परेशानी नहीं है, तब तक जब तक आप इस स्थिति का सामना नहीं करते हैं या सेट करने के लिए बहुत अधिक गुण हैं। यह भी ध्यान रखें कि आप शायद कुछ सत्यापन करना चाहते हैं ("पैरामीटर दिया गया था?" "क्या इस क्षेत्र के लिए मान्य मान है?") – johusman

+1

अपनी सैनिटी के लिए, अपने सर्वलेट को 'PersonServlet' या किसी चीज़ पर पुनर्नामित करें। – Jeremy

+0

धन्यवाद जोहसमैन, मैं उम्मीद कर रहा था कि पहले से ही कुछ है। प्रमाणीकरण और अन्य तर्क कक्षा के उदाहरण पर बाद में किया जाता है। – Simon

उत्तर

17

कि Apache Commons BeanUtils लिए

कुछ जादू अक्सर प्रयोग किया जाता है।

BeanUtils.populate(bean, request.getParameterMap()); 

यही है।

एक कदम आगे पाने के लिए, आप एक एमवीसी ढांचे को अपना सकते हैं जो जैवबीन्स को मॉडल के रूप में उपयोग करता है ताकि आपको उनके बारे में चिंता करने की आवश्यकता न हो, जैसे कि JSF या Spring MVC


ठोस सवाल से संबंधित नहीं, getParameterValues() का उपयोग कर इस विशिष्ट उदाहरण में अनाड़ी है। बस getParameter() का उपयोग करें।

p.setName(request.getParameter("name")); 
p.setSecondname(request.getParameter("secondname")); 
+0

धन्यवाद, आप बहुत ही अच्छे हैं। – Simon

+0

आपका स्वागत है। – BalusC

संबंधित मुद्दे