【发布时间】:2013-03-29 21:43:19
【问题描述】:
我可以设置面板的位置然后更新它,但是在获取它的当前位置时我遇到了麻烦。
例如: 目前,我的面板位于 (50, 50)。
<h:form id="testForm">
<p:panel id="pane" style="position: absolute; left:50px; top:50px;">
<p:panelGrid columns=4>
<p:outputPanel id="ASlot3" styleClass="slot"/>
<p:outputPanel id="ASlot4" styleClass="slot"/>
<p:outputPanel id="ASlot5" styleClass="slot"/>
<p:outputPanel id="ASlot6" styleClass="slot"/>
</p:panelGrid>
</p:panel>
<p:draggable id="drg" for="pane"/>
<p:commandButton id="press" action="#{sbean.press}"/>
</h:form>
我通过拖动面板来更新它的位置。拖动它后,我按下一个持有此方法的按钮,打印“样式”的内容。
//press() method
UIViewRoot viewRoot = FacesContext.getCurrentInstance().getViewRoot();
UIComponent component = viewRoot.findComponent("testForm").findComponent("pane");
Panel p = (Panel) component;
System.out.println(p.getAttributes().get("style"));
拖动面板并按下按钮后,“样式”不会更新。
那么如何在拖动后获取面板的当前位置?
编辑:顺便说一句,我使用的范围是@ViewScoped
【问题讨论】:
-
它可能不应该有所作为,但您是否尝试将组件直接绑定到 bean?
-
@kolossus 可能确实有效并且容易得多。
-
@Francis 在您希望绑定的组件类型的支持 bean 中创建并初始化一个成员变量,例如
Panel myPanel = new Panel()(不要忘记 getter 和 setter)。然后在您的视图侧组件上添加binding=#{myBean.myPanel}。您希望与支持 bean 中的组件进行的所有进一步交互现在都应该使用myPanel变量。
标签: java jsf primefaces