Как вызвать переменную пути в классе Pojo - PullRequest
0 голосов
/ 14 мая 2018

Я новичок в весенней загрузке и пытаюсь сделать что-то новое.В настоящее время у меня есть 3 класса pojo, которые расширяются в пользовательском классе.Я пытаюсь присвоить значение may @PathVariable partnerid во всем классе метода идентификатора сеттера, как показано ниже.Мой вопрос заключается в том, предоставляет ли весенняя загрузка любую аннотацию @, которая вызывает мою переменную в моем классе Partner.Я пытаюсь обновить свой запрос пользователя, добавив идентификатор партнера в методе установки.

@RestController
@RequestMapping(value = "/push/fire/")
public class PushIdController {

    private final static Logger log = LoggerFactory.getLogger(PushIdController.class);

    @Autowired
    private ApplicationEventPublisher applicationEventPublisher;

    @RequestMapping(value = "/partner/{partnerId}", method = RequestMethod.POST)
    @annotation("new Partner().setPartnerId("PathVariable value")")
    public User userLogin(@PathVariable("partnerId")  String partnerId, @RequestBody User user){

        return user;

    }
}
Класс партнера
public class Partner {

    private String partnerId;

    public String getPartnerId() {    return partnerId; }
    public void setPartnerId(String partnerId) { 
        this.partnerId = partnerId;
    }

    @Override
    public String toString() {
        return "Partner{" + "partnerId='" + partnerId + '\'' + '}';}
}
Класс пользователя
public class User {

    private final static Logger log = LoggerFactory.getLogger(User.class);

    private String userId;
    private Role role;
    private Video video;

     public void setUserId(String userId) {
        log.info("set-User-id");
        // getPartnerId null
        this.userId = userId + "_" + getPartnerId() ;
    }
    public void setRole(Role role) {
        log.info("set-User-Role");
        this.role = role;
    }

    public void setVideo(Video video) {
        log.info("set-User-Video");
        this.video = video;
    }
}
Класс роли
public class Role {

    private String roleId;

    public void setRoleId(String roleId) {
        // getPartnerId null
        this.roleId = roleId + "_"  +  getPartnerId();
    }

}
Класс видео
public class Video {

    private String videoId;

    public void setVideoId(String videoId) {
        this.videoId = videoId + "_"  + getPartnerId();
    }
}

Запрос Json:-

{
    "userId": "1d3ejjj",
    "userName": "Nabeel.amd93@gmail.com",
    "phone": "03153817177",
    "role": {
         "roleId": "d423",
          "name": "nabeel ahmed"
    },
    "video": {
        "videoId": "123456d",
        "h": "25",
        "w": "25"

    }
}

Ответ Json: -

{
    "userId": "1d3ejjj_1d2d6dq0jhjhk",
    "userName": "Nabeel.amd93@gmail.com",
    "phone": "03153817177",
    "role": {
         "roleId": "d423_1d2d6dq0jhjhk",
          "name": "nabeel ahmed"
    },
    "video": {
        "videoId": "123456d_1d2d6dq0jhjhk",
        "h": "25",
        "w": "25"

    }
}

, как мы знаем, когда мы нажимаем на запрос, Json назначает метод вызова вызывающего метода Pojo во время вызова метода, я просто хочу обновить идентификаторкаждого класса.Я хотел бы обновить, как показано ниже

user.setUserId(user.getUserId+"_"+partnerId);
user.getVideo().setVideoId(user.getVideo().getVideoId+"_"+partnerId);

и soo на .....

1 Ответ

0 голосов
/ 16 мая 2018

Все После долгих поисков я нашел способ вызвать переменную path в класс Pojo.

Вызов @annotation Spring «InitBinder» предоставляет аннотацию @InitBinder, которая идентифицирует методы, которые инициализируют WebDataBinder, и этот WebDataBinder заполняет аргументы для аннотированных методов.Следовательно, самый простой способ - зарегистрировать несколько пользовательских редакторов в Spring.поэтому я создаю объект-партнер в методе, получая значение параметра запроса.

ПРИМЕЧАНИЕ: - Когда я размещал сообщение сверху, я забыл добавить слово статического ключа с переменной partnerId

Партнерский класс

public class Partner {

    public static String partnerId;

    public static String getPartnerId() {    return partnerId; }
    public void setPartnerId(String partnerId) {
       this.partnerId = partnerId;
    }

    @Override
    public String toString() {
       return "Partner{" + "partnerId='" + partnerId + '\'' + '}';}
    }
}

После данных я добавляю этот метод в свой контроллер, например

@InitBinder
public void initBinder(final WebDataBinder webdataBinder) {
    webdataBinder.registerCustomEditor(String.class, new PartnerFireId());
}

И класс PartnerFireId, например

public class PartnerFireId extends PropertyEditorSupport {

    private Partner partner;

    public void setAsText(final String partnerKey) throws IllegalArgumentException {
        partner = new Partner();
        partner.setPartnerId(partnerKey);
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...