Использовать шаблон с JSF? - PullRequest
1 голос
/ 07 февраля 2012

Я просто пытаюсь портировать свое крошечное приложение для настольного компьютера на веб. С тех пор я пытаюсь выяснить, как я могу использовать шаблон построителя (у меня уже есть) в JSF? Или мне нужно выполнить рефакторинг в Bean Entities и я не могу использовать Builder?

Рассмотрим следующий код:

public class MyFacade {
  private MyClass bar;

  publich save() {
    crudService.persist(bar);
  }
}


<h:inputText id="name" value="#{MyFacade.bar.property}" />
//submit button

Я хочу сохранить значения текстового поля в моей БД / сущности, конечно. Что довольно легко, если у вас нормальные бэк-бины.

Но что, если я создаю свои объекты, подобные следующим?

MyClass newObject = MyClass.Builder("mandatory field").setOptionalFields("optional field").build();

Как я могу использовать это в jsf, если вообще?

Большое спасибо

1 Ответ

1 голос
/ 07 февраля 2012

Если я вас правильно понимаю, вы должны добавить в свое JSF-приложение другой тип bean-компонентов для взаимодействия с вашим представлением и оставить свои фасонные (dao) bean-компоненты такими, какие они есть.В итоге вы получите что-то вроде этого:

@RequestScoped
public class YourBean{

    @Inject
    private MyFacade facade;

    //bean created with builder
    private MyBean bean;

    public String someMethodExecutedwithEL(){
        //build your object here and save it with the dao layer
        facade.save(objectFromBuilder);
    }
    @PostConstruct
    public void init(){
        //create your bean with builder pattern
    }
}

Пример выше - это, конечно, просто набросанная идея, суть в том, что ничто не мешает вам создавать ваши объекты с использованием шаблона строителя, просто добавьте еще один слой дляразделение задач.

РЕДАКТИРОВАНИЕ:

Если вы хотите создать свои объекты до того, как они будут использованы на странице jsf, вы можете добавить аннотированный метод @PostConstruct (также обновил пример кода)

Возможности бесконечны.

Совет - подумайте над именованием ваших классов и переменных, используя стандартные соглашения об именах и здравый смысл.

...