java स्प्रिंग रेस्ट कंट्रोलर: कैसे चुनिंदा सत्यापन बंद बंद करें



spring spring-mvc (1)

संक्षिप्त उत्तर: सत्यापन समूह का उपयोग करें:

@NotEmpty(groups = SomeCriteria.class)
private String field1;

और अपने इच्छित समूह को विधि हैंडलर पैरामीटर में संदर्भ दें:

public ResponseEntity<?> create(@Validated(SomeCriteria.class) @RequestBody RequestDTO requestDTO)

उपर्युक्त उदाहरण में, कुछ SomeCriteria समूह में SomeCriteria को लागू किया जाएगा और अन्य लोगों को ध्यान नहीं दिया जाएगा। आमतौर पर, इन सत्यापन समूहों को खाली इंटरफेस के रूप में परिभाषित किया जाता है:

public interface SomeCriteria {}

आप हाइबरनेट वैल्यूएटर दस्तावेज़ में इन समूहों की बाधाओं के बारे में अधिक पढ़ सकते हैं।

मेरे नियंत्रक में एक इकाई बनाने के लिए मेरे पास एक तरीका है

import javax.validation.Valid;
...
@RestController
public class Controller {

  @RequestMapping(method = RequestMethod.POST)  
  public ResponseEntity<?> create(@Valid @RequestBody RequestDTO requestDTO) {
  ...

साथ में

import org.hibernate.validator.constraints.NotEmpty;
...
public class RequestDTO
    @NotEmpty // (1)
    private String field1;
    //other fields, getters and setters.

मैं एक नियंत्रक विधि जोड़ना चाहता हूँ

update(@Valid @RequestBody RequestDTO requestDTO)

लेकिन इस पद्धति में इसे field1 खाली या शून्य होने की अनुमति दी जानी चाहिए, अर्थात् लाइन

@NotEmpty // (1)

अनुरोध RequestDTO से अनदेखा किया RequestDTO चाहिए।

मैं यह कैसे कर सकता हूँ? क्या मुझे एक ऐसा क्लास लिखना है जो RequestDTO तरह ठीक दिखता है, लेकिन क्या एनोटेशन नहीं है? या यह विरासत के माध्यम से किसी भी तरह संभव है?





spring-web