Как узнать (в бэкбоне), который был нажат p: commandButton? [Дубликат]

Я бы предложил создать HTML-страницу, которая использует setIntreval (), чтобы неоднократно совершать вызовы AJAX скрипту PHP, который запрашивает вашу базу данных. Вы можете использовать JSON и PEAR, чтобы облегчить задачу.

Ссылки:

0
задан roel 23 November 2012 в 13:03
поделиться

2 ответа

AjaxBehaviorEvent не относится к RichFaces. Это характерно для JSF2. Поэтому вы можете просто использовать его в PrimeFaces.

public void retrievePostalCodeCity(AjaxBehaviorEvent event) {
    UIComponent component = event.getComponent();
    // ...
}

В качестве альтернативы или для случая, когда действительно невозможно в другом месте, вы всегда можете использовать новый JSF2 UIComponent#getCurrentComponent() .

public void retrievePostalCodeCity() {
    UIComponent component = UIComponent.getCurrentComponent(FacesContext.getCurrentInstance());
    // ...
}

Кстати, та же самая конструкция должна отлично работать с собственными JSF2 <f:ajax>. Я не вижу причин использовать <p:ajax> здесь. Это было бы единственным способом, если бы вы фактически использовали компонент PrimeFaces, такой как <p:inputText>.


Не связанный с конкретной проблемой, event="change" уже по умолчанию. Вы можете просто опустить это.

2
ответ дан BalusC 16 August 2018 в 12:10
поделиться
  • 1
    Обычно я предпочитаю p: ajax из-за неполного, если мне нужно знать о процессе. – HRgiger 23 November 2012 в 13:48
  • 2
    Это правда, но конкретная конструкция OP не показывает этого. Я прямо упомянул, что в конкретной конструкции OP <f:ajax> можно использовать как хорошее. – BalusC 23 November 2012 в 13:49
  • 3
    Я не хочу использовать onstart и oncomplete, поэтому я использую p: ajax. Проблема в том, что если я сменил своего слушателя на public void retrievePostalCodeCity (событие AjaxBehaviorEvent) {. Я получаю сообщение об ошибке: javax.faces.FacesException: Target Unreachable, идентификатор «businessPartner» разрешен к null – roel 23 November 2012 в 16:55
  • 4
    <f:ajax> вообще не имеет атрибутов onstart и oncomplete, поэтому ваш аргумент не имеет смысла, поэтому я проигнорирую его. Возвращаясь к вашей конкретной проблеме, эта проблема возникает в другом месте, что не видно в представленной до сих пор информации. SSCCE поможет. – BalusC 23 November 2012 в 16:58
  • 5
    Я ошибся, я хочу использовать onstart и oncomplete. Поэтому я хочу использовать p: ajax вместо f: ajax. Не будьте knwo, где мой ум был, когда печатал предыдущий комментарий. Видимо, не пальцами. – roel 26 November 2012 в 11:16

Это почти то же самое в pеференциях:

 <p:ajax event="change" listener="#{businessPartner.primaryAddress.retrievePostalCodeCity}"  />


import javax.faces.event.AjaxBehaviorEvent;
.....
public void retrievePostalCodeCity(AjaxBehaviorEvent event) {
...
}

Если вы хотите получить доступ через тег компонента action / actionListener , вы можете использовать ActionEvent и для любого случая make убедитесь, что вы установили ajax = "true" :

<p:commandLink actionListener="#{businessPartner.primaryAddress.retrievePostalCodeCity}" ajax="true" />

import javax.faces.event.ActionEvent;

....

public void retrievePostalCodeCity(ActionEvent event) {
    ...
    }
-2
ответ дан HRgiger 16 August 2018 в 12:10
поделиться
  • 1
    Этот ответ уже был дан. Почему вы повторяете уже данный ответ? Это сайт Q & amp; A, а не обычный и примитивный дискуссионный форум, в котором каждый повторяет друг друга по соглашению. Если у вас есть соглашение, просто выражайте это голосованием, а не повторением ответа. – BalusC 23 November 2012 в 13:50
  • 2
    Когда я писал, вы уже сделали, но я обновил дополнительную информацию. Вы можете сохранить дополнительную информацию, вы получили голос :) – HRgiger 23 November 2012 в 14:00
  • 3
    Мне не нужно это через commandbutton. Я хочу вызвать его, когда редактирую поле ввода – roel 23 November 2012 в 16:56
Другие вопросы по тегам:

Похожие вопросы: