Как реализовать навигацию вперед в JSF? - PullRequest
0 голосов
/ 03 ноября 2019

Я разработал весь проект JSF с механизмом перенаправления, и он работает довольно хорошо. Поскольку я хочу улучшить производительность, я думаю, что механизм forward - это хороший способ сделать это. Поскольку я сталкиваюсь с какой-то проблемой, мне нужна помощь в этом. Я собираюсь показать, как я использую навигацию в моем приложении:

    @Named(value = "customersView")
@RequestScoped
public class CustomersView implements Serializable {

public String onNewElement() {
        return "create?faces-redirect=true";
    }

    public String onEditElement(Customer seleceted) {
        this.selected = seleceted;
        FacesContext.getCurrentInstance().getExternalContext().getFlash().put("customer", seleceted);
        return "create?faces-redirect=true";
    }

Это мой list.xhtml файл:

<p:menuButton style="float:right;" icon="ui-icon-person-add"
                                value="Add customer">
                                <p:menuitem value="New" icon="ui-icon-create"
                                    outcome="#{customersView.onNewElement()}" />

Тогда у меня есть компоненты, которыеобработать создание клиента:

@Named
@javax.faces.view.ViewScoped
public class CreateCustomerView implements Serializable {

    @Inject
    CustomerController customerController;
    private Customer customer;
    private boolean edit;

@PostConstruct
    public void init() {
        edit = FacesContext.getCurrentInstance().getExternalContext().getFlash().containsKey("customer");
        if (edit) {
            this.customer = (Customer) FacesContext.getCurrentInstance().getExternalContext().getFlash()
                    .get("customer");
            FacesContext.getCurrentInstance().getExternalContext().getFlash().keep("customer");
        } else {
            this.customer = new Customer();
        }
        this.municipalities = new MunicipalityParser().parse();
        this.provinces = new ArrayList<>();
        for (Municipality municipality : municipalities) {
            if (!provinces.contains(municipality.getProvince())) {
                provinces.add(municipality.getProvince());
            }
        }
    }

    public String onCompletedSave() {
        customerController.store(customer);
        try {
            new CardCreator().createCard(customer);
        } catch (IOException e) {
            e.printStackTrace();
        }
        FacesContext.getCurrentInstance().addMessage(null,
                new FacesMessage(FacesMessage.SEVERITY_INFO,
                        "The customer " + customer.getSurnameAndName() + " has been saved correctly",
                        "Coorect!"));
        FacesContext.getCurrentInstance().getExternalContext().getFlash().setKeepMessages(true);
        return "list?faces-redirect=true";
    }

    public Customer getCustomer() {
        return customer;
    }

    public void setCustomer(Customer customer) {
        this.customer = customer;
    }

}

Как я могу переключиться на механизм пересылки самым простым способом?

Это главное меню:

<pu:menu widgetVar="me">
                    <p:menuitem id="um_dashboard" value="Home" icon="&#xe8d1;"
                        outcome="/s/dashboard" />
                    <p:submenu id="registries" label="My menu" icon="&#xe7fd;">
                        <p:menuitem id="customers" value="Customers"
                            outcome="/s/customers/list" />
                        <p:menuitem id="children" value="Children"
                            outcome="/s/children/list" />
                        <p:menuitem id="schools" value="Scuole" outcome="/s/schools/list" />
                    </p:submenu>

Возможно ли реализовать этот механизм и для этого?

...