sana sihirbazın sonraki sayfaya gittiklerinde Görünüm Dürbünlü veriler kaybolur inanıyoruz) doğru olduğundan
. Görünüm kapsamı, aynı görünümle etkileşim kurduğunuz ve yeni bir görünüm oluşturulduğunda çöp kutusuna atıldığı sürece yaşar. "Konuşma alanı" nı arıyorsun. Bu, herhangi bir JSF yönetilen fasulye kapsamı tarafından mevcut değildir. Ancak bu, CDI @ConversationScoped
tarafından kullanılabilir. ortamınızın CDI desteklemek için ne ise Yani, bunu kullanan yapabiliriz:
import javax.enterprise.context.Conversation;
import javax.enterprise.context.ConversationScoped;
import javax.inject.Inject;
import javax.inject.Named;
@Named
@ConversationScoped
public class Wizard implements Serializable {
@Inject
private Conversation conversation;
@PostConstruct
public void init() {
conversation.begin();
}
public void submitFirstStep() {
// ...
}
// ...
public String submitLastStep() {
// ...
conversation.end();
return "someOtherPage?faces-redirect=true";
}
// ...
}
konuşma otomatik olarak eklenir cid
istek parametresi tarafından yönetilmektedir. Eğer bir 3. parti kullanabilirsiniz,
<h:panelGroup rendered="#{wizard.step == 1}">
<ui:include src="/WEB-INF/wizard/step1.xhtml" />
</h:panelGroup>
<h:panelGroup rendered="#{wizard.step == 2}">
<ui:include src="/WEB-INF/wizard/step2.xhtml" />
</h:panelGroup>
<h:panelGroup rendered="#{wizard.step == 3}">
<ui:include src="/WEB-INF/wizard/step3.xhtml" />
</h:panelGroup>
Veya:
Eğer JSF görünümü kapsamına sadık isterseniz, o zaman en iyi bahis koşullu birden çok adım işlemek burada tek bir sayfa oluşturmaktır Tam olarak bu amaçla bir <p:wizard>
bileşeni olan PrimeFaces gibi bileşen kitaplığı.
Ben ViewScope sadece Ajax ile düzgün çalıştığını düşünüyorum. Ancak bu seçeneği öneriyorum. – Gaim