वापस उपयोगकर्ता वस्तु जहां विभाग वस्तु = अशक्त प्राप्त करने के लिए क्या करने की जरूरत क्या है?
यदि आप नियंत्रक विशिष्ट समाधान की तलाश में हैं, तो सभी खाली घोंसले वाले पैराम ढूंढें और इन पैरा को अस्वीकृत फ़ील्ड के रूप में सेट करें।
@InitBinder(value="user")
public void bind(WebDataBinder dataBinder, WebRequest webRequest) {
List<String> emptyParams = new ArrayList<String>();
Iterator<String> itr = webRequest.getParameterNames();
while(itr.hasNext()) {
String name = itr.next();
if(name.startsWith("department.")) {
Object value = webRequest.getParameter(name);
if("".equals(value)) {
emptyParams.add(name);
}
}
}
if(!emptyParams.isEmpty()) {
dataBinder.setDisallowedFields(emptyParams.toArray(new String[emptyParams.size()]));
}
}
यदि आप एक सामान्य समाधान की तलाश में हैं तो कस्टम डेटा बाइंडर बनाएं और खाली सभी घोंसला वाले पैरा को हटा दें।
public class CustomDataBinder extends ServletRequestDataBinder {
@Override
protected void doBind(MutablePropertyValues mpvs) {
PropertyValue[] pvArray = mpvs.getPropertyValues();
for (PropertyValue pv : pvArray) {
boolean nestedProperty = PropertyAccessorUtils.isNestedOrIndexedProperty(pv.getName());
if(nestedProperty && "".equals(pv.getValue())) {
mpvs.removePropertyValue(pv);
}
}
super.doBind(mpvs);
}
}
और कस्टमडेटाइंडर का उपयोग करने के लिए आपके पास कस्टम हैंडलर एडाप्टर होना चाहिए।
public class StandardAnnotationMethodHandlerAdapter extends AnnotationMethodHandlerAdapter {
@Override
protected ServletRequestDataBinder createBinder(HttpServletRequest request, Object target, String objectName) throws Exception {
CustomDataBinder dataBinder = new CustomDataBinder (target, objectName);
return dataBinder;
}
}
मुझे यकीन नहीं है कि यह चाल चलती है लेकिन आप "department.name" और "department.description" दोनों के लिए एक कस्टम संपादक पंजीकृत कर सकते हैं। SetAsText() विधि में इस कस्टम संपादक में स्ट्रिंग खाली नहीं होने पर केवल मान निर्धारित करें। इसलिए यदि आपके पास इस तत्व पर अधिक गुण नहीं हैं तो संपादक ऑब्जेक्ट पर सेटटर को कॉल करने से रोकेंगे (मुझे क्या यकीन नहीं है कि ऑब्जेक्ट को तत्काल नहीं किया जाएगा, भले ही कोई संपत्ति उस पर आबादी न हो, मुझे लगता है कि नहीं, लेकिन मैं पूरी तरह से यकीन नहीं कर रहा हूँ)। समस्या यह होगी कि यदि केवल एक संपत्ति खाली है तो खाली विशेषता शून्य के रूप में आबादी होगी। – Javi
दुर्भाग्य से यह काम नहीं करता है। मैं इस तरह के संपादक को पंजीकृत करता हूं: dataBinder.registerCustomEditor (Department.class, नया विभाग संपादक()); और जिस तरह से उपयोगकर्ता ऑब्जेक्ट तत्काल विभाग के साथ खाली एट्रिब्यूट – eugenn
के साथ आता है, क्या आपने नाम और विवरण के लिए सेटर्स पर ब्रेकपॉइंट सेट किए हैं (केवल यह देखने के लिए कि संपादक अच्छी तरह से पंजीकृत है और उन्हें लागू नहीं किया गया है)। जाने का एक और तरीका जावास्क्रिप्ट के साथ फॉर्म को क्रमबद्ध करने से पहले इन इनपुट को अक्षम करने के लिए सेट कर सकता है, क्योंकि फॉर्म भेजते समय अक्षम इनपुट नहीं भेजे जाएंगे। – Javi