【问题标题】:Propagating GET parameters in a select在选择中传播 GET 参数
【发布时间】:2012-01-13 13:25:49
【问题描述】:

我有一个选择框,用户可以在其中选择自己喜欢的皮肤:

<h:form style="float: right;">
  <h:outputText value="Skin:&#160;" />
  <h:selectOneMenu value="#{skinBean.skin}" id="skin-selector" onchange="this.form.submit();">
    <f:selectItem itemValue="DEFAULT" itemLabel="Default" />
    <f:selectItem itemValue="classic" itemLabel="Classic" />
    <f:selectItem itemValue="blueSky" itemLabel="Blue Sky" />
    <f:selectItem itemValue="deepMarine" itemLabel="Deep Marine" />
    <f:selectItem itemValue="emeraldTown" itemLabel="Emerald Town" />
    <f:selectItem itemValue="japanCherry" itemLabel="Japan Cherry" />
    <f:selectItem itemValue="ruby" itemLabel="Ruby" />
    <f:selectItem itemValue="wine" itemLabel="Wine" />
  </h:selectOneMenu>
</h:form>

此元素放置在模板中,并且在每个页面上都可以看到。

问题:

您如何传播当前页面的 GET 参数,以使皮肤选择不会在没有任何 GET 参数的情况下出现在同一页面中(上面的代码目前就是这样做的)?

谢谢

【问题讨论】:

    标签: jsf-2 get richfaces


    【解决方案1】:

    我可以看到的一个解决方案是编写一个 javascript 或 jQuery 函数来获取当前 URL 并将皮肤附加到它。我已经重写了你的代码。

        <h:selectOneMenu value="#{skinBean.skin}" id="skin-selector" onchange="changeSkin(this)">
    
       function changeSkin(selectObject){
            var url = location.href;
            var value = selectObject.options[selectObject.selectedIndex].value;
            if(url.indexOf("?") > 0 ){
                var skinQIndex=url.indexOf("?skin");
                var skinAIndex=url.indexOf("&skin");
                if(skinQIndex > 0 ){
                    if(url.indexOf("&",skinQIndex+1)>0){
                         var str = url.substring(0,skinQIndex+1) + "skin="+value + url.substring(url.indexOf("&",skinQIndex));
                         url =str;
                        }else{
                            url = url.substring(0,skinQIndex+1)+ "skin="+value; 
                        }
                }else if(skinAIndex >0){
                    if(url.indexOf("&",skinAIndex+1)>0){
                         var str = url.substring(0,skinAIndex+1)+ "skin="+value + url.substring(url.indexOf("&",skinAIndex+1)) ;
                          url =str;
                        }else{
    
                            url = url.substring(0,skinAIndex+1)+ "skin="+value; 
                        }
                }else{
                    url = url + "&skin="+value; 
                    }                           
            }else{
                url = url + "?skin="+value;
            }
            window.location.href = url;
            }        
    

    【讨论】:

    • 嗨,你解决了这个问题吗,如果是,请告诉我你遵循的方法。谢谢纳文
    猜你喜欢
    • 1970-01-01
    • 2011-10-29
    • 2018-08-01
    • 1970-01-01
    • 2016-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多