2017-04-04 33 views
0

可以有人告诉我如何连接primefaces中的两个或多个旋钮?如何连接primefaces jsf

我的意思是这件事 https://www.primefaces.org/showcase/ui/input/knob.xhtml

我想有像 MAXVALUE = 100; knob2.value = MAXVALUE - knob1.value

所以如果我设置knob1较高另一个向下

<h3>Colors</h3> 
    <div class="knob-container ui-corner-all"> 
     <p:knob foregroundColor="red" backgroundColor="#00000" value="#{knobView.value}"> 
      <p:ajax listener="#{knobView.onChange}"/> 
     </p:knob> 
     <p:knob foregroundColor="blue" backgroundColor="#0000FF" value="#{knobView.value2}"> 
      <p:ajax listener="#{knobView.onChange}"/> 
     </p:knob> 
    </div> 

public void onChange(){ 
    FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, 
      "val1: " + value + " " + 
      "val2: " + value2   , null 
      )); 
    this.value2 = maxval - this.value; 

} 

编辑:附加 信息 我想有这样的: 在启动knob1 = 50;旋钮2 = 50 我设置knob1至60和旋钮2自动下降到40 我设置knob1至10和旋钮2上升到90

+0

这是一个有点不清楚你想你可以请解释更多呢? –

+0

添加您的onChange方法。 – jklee

+0

你想同时配对? – jklee

回答

1

使用2种的onChange方法和更新变化后的其他旋钮。

XHTML

<div class="knob-container ui-corner-all"> 
    <p:knob id="knob_1" foregroundColor="red" backgroundColor="#00000" 
     value="#{knobView.value1}"> 
     <p:ajax listener="#{knobView.onChange1()}" update="knob_2" /> 
    </p:knob> 
    <p:knob id="knob_2" foregroundColor="blue" backgroundColor="#0000FF" 
     value="#{knobView.value2}"> 
     <p:ajax listener="#{knobView.onChange2()}" update="knob_1" /> 
    </p:knob> 
</div> 

@Named 
@SessionScoped 
public class KnobView implements Serializable { 

    int value1; 
    int value2; 
    int maxval = 100; 
    // getter & setter 

    public void onChange1() { 
     FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, 
       "val1: " + value1 + " " + 
         "val2: " + value2, 
       null)); 
     this.value2 = maxval - value1; 
    } 

    public void onChange2() { 
     FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, 
       "val1: " + value1 + " " + 
         "val2: " + value2, 
       null)); 
     this.value1 = maxval - value2; 
    } 

} 
+0

thx 我需要@ManagedBean(name =“knobView”)? 我还没有到达喇嘛喇嘛没有 但@命名+ @ ManagedBean 它的工作原理部分,也产生新的旋钮圈,所以每次活动后,我得到了+1更 但数字是例如正确knob1 = 7,旋钮2 = 25 我会调试它;)并阅读更多关于@Named的信息 – w3Charlie

+0

'@ Named'用于绑定xhtml和bean。 '@ ManagedBean(name =“knobView”)'也可以,但'@ ManagedBean'是旧的解决方案。只使用一个。我主张'@ Named'和CDI Scope。 – jklee

+0

它与[广告] ManagedBean(NAME =“knobView”) [广告]命名 [广告] SessionScoped 既但它是窃听,因为我应该只使用命名方式或管理 只有命名,我得到了“引起:javax.el.PropertyNotFoundException:/index.xhtml [ad] 18,39 value =“#{knobView.value1}”:目标不可达,标识符'knobView'解析为null“ – w3Charlie