Spring, доступ к методу с другого контроллера

Вы можете использовать HtmlElementCollection.GetElementsByName , чтобы взять значение элементов

webBrowser1.Document.GetElementsByName("textfield2").SetAttribute("value", textBox1.Text);

EDIT

foreach (HtmlElement he in webBrowser1.Document.All.GetElementsByName("textfield2"))
{
    he.SetAttribute("value", textBox1.Text);
}

0
задан 4javier 21 January 2019 в 12:00
поделиться

1 ответ

Если я вас правильно понимаю:

  1. Вам не нужен контроллер A внутри B. Контроллеры не несут ответственности за сохранение объектов, они касаются только веб-обмена. Например, вы можете внедрить свой компонент @Repository или @Service объекта A в контроллер B и вызвать метод save () для своих объектов. (на мой взгляд, лучший подход будет заключаться в том, чтобы внедрить AResporitory внутри класса BService)

    ОБНОВЛЕНО

    Пример:

    @Transactional
    @Service
    public class LineaService {
    
    @Autowired
    private LineaRepository lineaRepo;
    @Autowired
    private MarcaService marcaService;
    
    public Linea create(Linea linea) {
        //creates new marca if not exists
        //no need for this block if you add cascade insert to your entity
        if (linea.getMarca().getId() == null) {
            marcaService.create(linea.getMarca());
        }
    
        return lineaRepo.save(linea);
    }
    

    Если вы установите существующее значение marca, которое вы нашли ранее, поэтому в этом случае оно будет иметь значение Id (например, пользователь выбрал его в форме пользовательского интерфейса).

  2. Другим подходом будет использование каскадных вставок в вашем праве B.

    @Entity
    public class EntityB {
    
        @ManyToOne(cascade = CascadeType.PERSIST)
        protected EntityA entityA;
    
    }
    

ОБНОВЛЕНО Каскады не создают новые строки уже существующих, но Hibernate проверяет существование строки только по первичному ключу. Если у вашего объекта сущности есть пустой первичный ключ, это означает, что это новый объект, и вам нужно вставить новую строку. Во многих случаях контроллер получит заполненное поле Id marca, потому что, как я писал ранее, пользователь может выбрать его в форме пользовательского интерфейса, используя, например, своего рода «компонент выбора». Но если в вашем случае пользователь не может выбрать марку и может только ввести его имя, то, конечно, каскады не будут хорошим решением, и вы сможете сначала искать марку по номеру (как вы делаете в своем коде) .

0
ответ дан Artur Vakhrameev 21 January 2019 в 12:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: