Вы можете использовать HtmlElementCollection.GetElementsByName , чтобы взять значение элементов
webBrowser1.Document.GetElementsByName("textfield2").SetAttribute("value", textBox1.Text);
foreach (HtmlElement he in webBrowser1.Document.All.GetElementsByName("textfield2"))
{
he.SetAttribute("value", textBox1.Text);
}
Если я вас правильно понимаю:
Вам не нужен контроллер 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
(например, пользователь выбрал его в форме пользовательского интерфейса).
Другим подходом будет использование каскадных вставок в вашем праве B.
@Entity
public class EntityB {
@ManyToOne(cascade = CascadeType.PERSIST)
protected EntityA entityA;
}
ОБНОВЛЕНО Каскады не создают новые строки уже существующих, но Hibernate проверяет существование строки только по первичному ключу. Если у вашего объекта сущности есть пустой первичный ключ, это означает, что это новый объект, и вам нужно вставить новую строку. Во многих случаях контроллер получит заполненное поле Id marca, потому что, как я писал ранее, пользователь может выбрать его в форме пользовательского интерфейса, используя, например, своего рода «компонент выбора». Но если в вашем случае пользователь не может выбрать марку и может только ввести его имя, то, конечно, каскады не будут хорошим решением, и вы сможете сначала искать марку по номеру (как вы делаете в своем коде) .