Я предполагаю, что ваша ячейка таблицы будет af:input text
.
Вам не нужен явно JS для достижения этой цели, как вы можете достичь этого в самом ADF. Так что, если у вас нет необходимости делать это в JS, вы можете попробовать это ниже. С кнопкой у нас есть action
или actionListener
, так же, как у нас valueChangeListener
с inputText
.
Предположим, у вас есть 2 входных текста (2 ячейки в таблице).
<af:inputText value="#{bindings.ESal.inputValue}"
label="#{bindings.ESal.hints.label}"
required="#{bindings.ESal.hints.mandatory}"
columns="#{bindings.ESal.hints.displayWidth}"
maximumLength="#{bindings.ESal.hints.precision}"
shortDesc="#{bindings.ESal.hints.tooltip}" id="it11"
autoSubmit="true" valueChangeListener="#{bean1.textChange}"
>
<f:validator binding="#{bindings.ESal.validator}" />
</af:inputText>
- Здесь введите
autoSubmit = true
для ввода текста, который будет
Измененное.
Используйте событие valueChangeListener и создайте метод как textChange
как
показано выше. Он будет срабатывать всякий раз, когда в вводимом вами тексте есть изменения (при смене табуляции также будет срабатывать).
<af:inputText label="Output label" id="ol1"
partialTriggers="it11" binding="#{bean1.lbl}"
disabled="true"/>
Этот inputText зависит от первого. По умолчанию отключено.
- Используйте PartialTrigger и назначьте в нем первый inputText.
Создать привязку для этого inputText, который можно использовать в управляемом
боб.
public void textChange(ValueChangeEvent valueChangeEvent) {
// Add event code here...
if(!(valueChangeEvent.getNewValue()==null ||
valueChangeEvent.getNewValue().equals(""))) // checking input Text value
{ // if not null
lbl.setDisabled(false); //then enable it
AdfFacesContext adfFacesContext = AdfFacesContext.getCurrentInstance();
adfFacesContext.addPartialTarget(lbl); // refresh the binding
}
else
{
lbl.setDisabled(true); //else disable it.
AdfFacesContext adfFacesContext = AdfFacesContext.getCurrentInstance();
adfFacesContext.addPartialTarget(lbl);
}
}