Здравствуйте, у меня возникла следующая проблема.Форма поиска, перенаправляющая на страницу результатов
У меня есть страница поиска, назовите его search.xhtml и вы можете найти штрих-код. Это значение является уникальным, так что результат всегда один или ноль объектов из базы данных
<p:panelGrid columns="1" style="margin:20px;">
<h:form>
<p:messages id="messages" globalOnly="true" showDetail="false" />
<p:message for="barcode" />
<p:inputText id="barcode" value="#{searchForm.barCode}"
required="true" requiredMessage="Value needed" />
<p:commandButton value="search"
action="#{searchForm.searchBarcode}" id="search"/>
</h:form>
</p:panelGrid>
Это backingbean:
@ManagedBean
@ViewScoped
public class SearchForm extends BasePage {
private Long barCode;
@ManagedProperty("#{daoManager}")
public DaoManager daoManager;
public void setDaoManager(DaoManager daoManager) {
this.daoManager = daoManager;
}
public Long getBarCode() {
return barCode;
}
public void setBarCode(Long barCode) {
this.barCode = barCode;
}
public String searchBarcode() {
//request to dao to get the object
DataList<Data> data = daoManager.findbybarcode(barCode);
if (data.size() == 0) {
this.addMessage(FacesMessage.SEVERITY_ERROR,
"Not Found: " + barCode);
return null;
} else {
getFacesContext().getExternalContext().
getRequestMap().put("id", data.getId());
return "details";
}
}
Так что, если я иду на моей странице сведений, которые ожидают, что идентификатор параметра это не будет отправьте на страницу сведений.
отступающие детали фасоли страницы:
@ManagedBean
@ViewScoped
public class DetailBean extends BasePage implements Serializable {
@PostConstruct
public void init() {
if (id != null) {
//Go on with the stuff
} else {
addMessage(FacesMessage.SEVERITY_ERROR,"Object not found");
}
}
}
Что я делаю неправильно? И разве это неправильное использование JSF? Я знаю, что могу создать список и щелкнуть по результату, но это не то, что я хочу. Также я могу взять штрих-код из первого компонента и передать его в качестве параметра, но я хочу, чтобы страница сведений только принимала идентификатор от объектов. Так я ошибаюсь? Или есть решение, чтобы получить это так?
Ну, я пробовал это, но тогда и карта запроса не содержит идентификатора. Пусто. – Tankhenk
@Tankhenk Смотрите мое редактирование выше ... Я исправил строку запроса. Для того чтобы его можно было рассматривать отдельно, вы должны передать параметр 'faces-redirect = true' для фактического выполнения перенаправления. –
Большое спасибо. Я попробовал это уже с face-redirect = true, но не работал, потому что у меня было какое-то умное завивание: details? Faces-redirect = true? Id = Но, конечно, мне нужно использовать знак &! Спасибо, что открыли глаза! – Tankhenk