замена 2-х строковых значений в jsf ui - PullRequest
0 голосов
/ 02 декабря 2018

Так что это довольно простой вопрос, и я просто не могу понять, почему это не работает, как я ожидал.

Мой проект - конвертер единиц измерения в J2EE.Интерфейс HTML с Java позади.

У меня есть 2 раскрывающихся окна на моей html-странице.

        <p:selectOneMenu id="convertFrom" value="#{conversions.convertFrom}">
            <f:selectItem itemLabel="Inches" itemValue="Inches" />
            <f:selectItem itemLabel="Feet" itemValue="Feet" />
            <f:selectItem itemLabel="Centimeters" itemValue="Centimeters" />
            <f:selectItem itemLabel="Meters" itemValue="Meters" />
        </p:selectOneMenu>

        <p:selectOneMenu id="convertTo" value="#{conversions.convertTo}">
            <f:selectItem itemLabel="Inches" itemValue="Inches" />
            <f:selectItem itemLabel="Feet" itemValue="Feet" />
            <f:selectItem itemLabel="Centimeters" itemValue="Centimeters" />
            <f:selectItem itemLabel="Meters" itemValue="Meters" />
        </p:selectOneMenu>

Эти раскрывающиеся списки подтвердили свою работу, поскольку у меня уже есть часть преобразования.

Я пытаюсь реализовать кнопку «Переключить единицы измерения», чтобы при наличии дюйма> футов вы могли нажать кнопку и переключить ее на «Стопы»> «Дюймы».Так что convertFrom нужно поменять местами с convertTo.

public void switchUnits() {
    String unitTo = getConvertTo();
    String unitFrom = getConvertFrom();
    setConvertTo(unitFrom);
    setConvertFrom(unitTo);
}

У меня есть кнопка на html-странице, которая вызывает этот метод (я подтвердил, что он работает, с помощью hardcoding setConvertTo ("Feet") и увидел, что он работает).

Итак, устраняя неполадки, я определил, что геттер и сеттеры работают правильно.И кнопка вызывает метод правильно.

Итак, TLDR, мой вопрос: что не так с кодом в моем методе switchUnits?Как написано здесь, когда он вызывается, ничего не происходит.Оба значения остаются прежними.

Любая помощь приветствуется, спасибо.

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018

В дополнение к ответу @ Soheil.St, в котором говорится об обновлении ваших компонентов, я могу добавить, что вам также нужно поместить <p:ajax/> внутри selectOneMenu для частичной отправки его данных.без предоставленных данных ваш выбор не будет отражен в вашем управляемом компоненте.

<p:selectOneMenu id="convertFrom" value="#{conversions.convertFrom}">
    <f:selectItem itemLabel="Inches" itemValue="Inches" />
    <f:selectItem itemLabel="Feet" itemValue="Feet" />
    <f:selectItem itemLabel="Centimeters" itemValue="Centimeters" />
    <f:selectItem itemLabel="Meters" itemValue="Meters" />
    <p:ajax/>
</p:selectOneMenu>

<p:selectOneMenu id="convertTo" value="#{conversions.convertTo}">
    <f:selectItem itemLabel="Inches" itemValue="Inches" />
    <f:selectItem itemLabel="Feet" itemValue="Feet" />
    <f:selectItem itemLabel="Centimeters" itemValue="Centimeters" />
    <f:selectItem itemLabel="Meters" itemValue="Meters" />
    <p:ajax/>
</p:selectOneMenu>

вам нужно установить process и обратиться к форме selectOneMenu в кнопке, если она в другой форме.

0 голосов
/ 02 декабря 2018

Ваш вопрос не завершен, и части кода здесь не видны, вы должны написать свой код кнопки, но я думаю, что вам нужно обновить свой selectOneMenus в кнопке после вызова вашего метода, например:

<p:commandButton id="yourButton" action="#{yourBean.switchUnits}"
 update="form_id:convertFrom form_id:convertTo">
</p:commandButton>

Идентификатор selectOneMenus при обновлении кнопки может меняться в зависимости от структуры форм.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...