Обновить компонент ввода из поддерживающего bean-компонента

Я устанавливаю компонент ввода из своего 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());

    }

в строке this. setLbaelCrono((String) arg) Я устанавливаю счетчик 00:00, 00:01, 00:02... и т. д. Я хочу обновить свой входной компонент, чтобы показать crono, но я не получаю этого результата вход Компонент остается в 00:00, что по умолчанию является значением "labelCrono". Что мне нужно сделать, чтобы обновить компонент, который я вижу.??

0 ответов

Другие вопросы по тегам