我正在从我的 bean 中设置一个输入组件
在我的豆子里
public void InicializarCronometro(ComponentSystemEvent e) {
HtmlForm form = (HtmlForm) e.getComponent();
UIInput input = new HtmlInputText();
input.setId("cronoInput"); // Must be unique!
input.setValueExpression("value", createValueExpression("#{jugarPartidoAdmBean.labelCrono}", String.class));
form.getChildren().add(input);
}
private ValueExpression createValueExpression(String valueExpression, Class<?> valueType) {
FacesContext context = FacesContext.getCurrentInstance();
return context.getApplication().getExpressionFactory()
.createValueExpression(context.getELContext(), valueExpression, valueType);
}
In my xhtml file:
<b:navBar brandHref="indexAdm.xhtml" inverse="true" fixed="bottom" sticky="false">
<b:navbarLinks>
<h:form id="footForm" styleClass="navbar-form navbar-right">
<f:event type="postAddToView" listener="#{jugarPartidoAdmBean.InicializarCronometro}" />
<b:row>
<b:column col-xs="12" col-sm="3" col-md="4" />
<b:column col-xs="12" col-sm="3" col-md="8" offset="12">
<b:commandButton value="Comensar" look="success" action="#{jugarPartidoAdmBean.ComensarPartido()}" style="margin-left: 10%;" />
</b:column>
</b:row>
</h:form>
</b:navbarLinks>
</b:navBar>
当我按下按钮时,我调用此方法来启动 crono
public void ComensarPartido() {
Cronometro crono = new Cronometro(0, 0);
crono.addObserver(this);
Thread t = new Thread(crono);
t.start();
}
crono 类工作正常,在我的 beAN 中我实现了 Observer,在更新方法中我有这个:
@Override
public void update(Observable o, Object arg) {
this.setLabelCrono((String) arg);
//InicializarCronometro(new HtmlInputText());
System.out.println(this.getLabelCrono());
}
在这一行。setLbaelCrono((String) arg) 我正在设置计数器 00:00, 00:01, 00:02... 等。我想更新我的输入组件以显示 crono 但我没有得到那个结果输入组件保持在 00:00,默认情况下它是“labelCrono”的值。我需要做什么来更新我视图中的组件。?