Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Redirect 重定向到结果页的搜索表单_Redirect_Jsf 2_Primefaces - Fatal编程技术网

Redirect 重定向到结果页的搜索表单

Redirect 重定向到结果页的搜索表单,redirect,jsf-2,primefaces,Redirect,Jsf 2,Primefaces,你好,我有以下问题 我有一个搜索页面,叫它search.xhtml,你可以搜索条形码。此值是唯一的,因此结果总是来自数据库的一个或零个对象 这是backingbean: @ManagedBean @视域 公共类SearchForm扩展了BasePage{ 专用长条码; @ManagedProperty(“#{daoManager}”) 公共事务经理; 公共void setDaoManager(DaoManager DaoManager){ this.daoManager=daoManager

你好,我有以下问题

我有一个搜索页面,叫它search.xhtml,你可以搜索条形码。此值是唯一的,因此结果总是来自数据库的一个或零个对象


这是backingbean:

@ManagedBean
@视域
公共类SearchForm扩展了BasePage{
专用长条码;
@ManagedProperty(“#{daoManager}”)
公共事务经理;
公共void setDaoManager(DaoManager DaoManager){
this.daoManager=daoManager;
}
公共长getBarCode(){
返回条码;
}
公共无效设置条码(长条码){
this.barCode=条形码;
}
公共字符串searchBarcode(){
//请求dao获取对象
DataList data=daoManager.findbybarcode(条形码);
if(data.size()==0){
此.addMessage(FacesMessage.SEVERITY_)错误,
“未找到:”+条形码);
返回null;
}否则{
getFacesContext().getExternalContext()。
getRequestMap().put(“id”,data.getId());
返回“详细信息”;
}
}
因此,如果我转到需要参数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。那么我的想法是错误的吗?或者有没有一个解决方案像这样获得它s?

如果我理解正确,您希望将条形码的ID传递到
详细信息
页面,是的,这是可能的

getFacesContext().getExternalContext().getRequestMap().put("id", data.getId()); 
下一行将ID参数放入客户端刚刚发送给您的请求中,但到
详细信息的导航操作将导致不同的请求。请尝试此操作:

return "details?faces-redirect=true&id=" + data.getId();

这将返回一个HTTP GET导航操作,其中条形码的ID作为请求参数在请求中传递。

我尝试了此操作,但请求映射也不包含ID。它是空的。@Tankhenk请参阅我上面的编辑…我修复了请求字符串。要将其视为单独的请求,您必须传递
faces redirect=true
请求参数以实际执行重定向。非常感谢。我已经用faces redirect=true尝试过了,但没有成功,因为我在键入:details?faces redirect=true?id=时有些心不在焉,但我当然需要使用&符号!谢谢你让我大开眼界!