0
您好,我有以下問題。搜索表單,重定向到結果頁面
我有一個搜索頁面可以叫它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";
}
}
所以,如果我去我的個人資料頁,其中預計參數ID這個心不是發送到詳細信息頁面。
後臺bean的詳細信息頁:
@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的錯誤使用?我知道我可以生成一個列表並點擊結果,但那不是我想要的。另外,我可以從第一個bean中獲取條形碼並將其作爲參數傳遞,但我希望詳細信息頁面只接受來自對象的id。我的思想錯了嗎?或者有沒有解決方案來得到它?
嗯,我試過這個,但也請求地圖不包含id。它是空的。 – Tankhenk
@Tankhenk看到我上面的編輯...我修正了請求字符串。要將它視爲一個單獨的請求,您必須傳遞'faces-redirect = true'請求參數以實際執行重定向。 –
非常感謝。我已經用faces-redirect = true試過了,但沒有奏效,因爲我有一些想法扭曲輸入:details?faces-redirect = true?id =但是我當然需要使用&sign!感謝您睜開眼睛! – Tankhenk