참고 관리 : 이 문제는 나 Vaadin이가 빈을 "재설정"여부를 "더 나은"솔루션이 거세한 숫양에 따라 관련 될 수도 있고 그렇지 않을 수도있다.는 콩
배경 시나리오
I가 완료되면, (만약 angel 및 추가 기능 "만약 angel에 대한 마법사"를 사용하여) 테이블에 전송되는 일부 값을 입력하는 마법사를 구축하고있다.
애드온은 onAdvance() 및 onBack() 메소드의 현재 단계 (강제)를 강제 호출하지 않고 마법사를 재설정하는 방법을 제공하지 않으므로 false를 반환합니다. 내 단계 중 일부는 예를 들어 사용이 필요한 모든 데이터를 채우지 않은 경우 해당 방법에서 논리를 사용하기 때문입니다. 나는이 @Component를 관리하기 위해 스프링을 사용하고 있기 때문에
나는 간단하지, 마법사의 새 인스턴스를 만들 수 있습니다.
그래서,이 사실은 제대로 마법사를 다시 설정하기 위해 콩을 다시 저를 떠난다.
내 질문은 어떻게 "재설정"할
하는 봄 콩 (@Component)를 관리? 나는이 Bean에 일부 종속성을 주입했다고 덧붙여 야한다. 합니다 (angel이라는 사람들을위한)
이나 ... :
새로운 마법사를 만드는 대신이 마법사 다른 재설정의 또 다른 방법이 있나요?
일부 코드
@Component
@Scope("session")
public class MyWizard extends Wizard {
@Inject
private MyWizardContainer myWizardContainer;
@Inject
private MyService myService;
@Inject
private MyWizardStep1 myWizardStep1;
@Inject
private MyWizardStep2 myWizardStep2;
@Inject
private MyWizardStep3 myWizardStep3;
@Inject
private MyMainTableContainer myMainTableContainer;
final static Logger logger = LoggerFactory.getLogger(MyWizard.class);
private static final long serialVersionUID = 1L;
public MyWizard() {
setupListener();
}
public void addSteps() {
this.addStep(myWizardStep1);
this.addStep(myWizardStep2);
this.addStep(myWizardStep3);
this.mainLayout.setComponentAlignment(this.footer, Alignment.BOTTOM_LEFT);
}
private void setupListener() {
this.addListener(new WizardProgressListener() {
@Override
public void wizardCompleted(WizardCompletedEvent event) {
endWizard("Wizard Finished Successfully!");
}
@Override
public void wizardCancelled(WizardCancelledEvent event) {
endWizard("Wizard Cancelled!");
}
@Override
public void stepSetChanged(WizardStepSetChangedEvent event) {
// TODO Auto-generated method stub
}
@Override
public void activeStepChanged(WizardStepActivationEvent event) {
// TODO Auto-generated method stub
}
});
}
private void resetWizard() {
myWizardContainer.removeAll(); //here I'm simply resetting all data that the user generated thus far in the wizard
this.activateStep(myWizardStep1); //this will not work, as some steps will not always return true on onBack() and/or onAdvance()
}
private void endWizard(String message) {
resetWizard();
this.setVisible(false);
Notification.show(message);
}
}
귀하의 제안은 합리적인 소리 당신은 내가 SVI를 사용하고 당신의 가정에서 올바른입니다. 내가 여기 뭔가 잘못하고 있다는 느낌이 들었고, @Configuration 주석에 대해서도 몰랐다. 나는이 첫번째 일을 내일 시도 할 것이고, 결과와 함께 앙갚음을 할 것이다! 감사! – Roger
'@ Configuration '을 어떻게 구성하여'Wizard' (POJO)가'@Inject'를 받아 들일 수 있는지 이해할 수 없습니다. 나는'@ Configuration'의 Spring 문서를 읽고 간단한 예제를 만들었는데,'@Configuration' 주석이 달린 AppConfig 클래스를 사용하여'새로운 마법사 '와'Wizard'가 가질 수있는 간단한 @Component'를 생성합니다 ('MyService')를 사용합니다. 그러나 실제로 "bean"(예 :'MyService')을 "POJO -ized"Wizard에 주입 할 때 (필자가 찾을 수있는) 아무것도 언급하지 않았습니다. 내가 시도 할 때, 나는'BeanCreationException'을 얻는다. 모든 단서? – Roger
죄송합니다, 나중에 다음 편집, 주석이 – dzezzz