我正在从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,但我没有得到该结果,输入组件默认为“ labelCrono”值保留在00:00。 我需要做些什么来更新视图中的组件。??