Проверьте это . У меня те же проблемы, что и у вас, но я решил их после прочтения ссылки BalusC .
Короче, вот о чем ты говоришь:
f: атрибут: с тегами h: commandLink и h: commandButton , вы также можете вызывать метод поддерживающего компонента, используя actionListener атрибут. При этом вы также можете использовать тег f: attribute для динамической передачи параметров. Вот пример:
<h:form>
<h:commandLink value="Click here" actionListener="#{myBean.action}">
<f:attribute name="attributeName1" value="attributeValue1" />
<f:attribute name="attributeName2" value="attributeValue2" />
</h:commandLink>
<h:commandButton value="Press here" actionListener="#{myBean.action}">
<f:attribute name="attributeName1" value="attributeValue1" />
<f:attribute name="attributeName2" value="attributeValue2" />
</h:commandButton>
</h:form>
Эти атрибуты могут быть получены с помощью getAttributes () родительского компонента пользовательского интерфейса, который в свою очередь может быть получен с помощью ActionEvent , переданного actionListener .
package mypackage;
import javax.faces.event.ActionEvent;
import net.balusc.util.FacesUtil;
public class MyBean {
// Actions -----------------------------------------------------------------------------------
public void action(ActionEvent event) {
String attributeName1 = FacesUtil.getActionAttribute(event, "attributeName1");
String attributeName2 = FacesUtil.getActionAttribute(event, "attributeName2");
System.out.println("attributeName1: " + attributeName1);
System.out.println("attributeName1: " + attributeName1);
}
}
package net.balusc.util;
import javax.faces.event.ActionEvent;
public class FacesUtil {
// Getters -----------------------------------------------------------------------------------
public static String getActionAttribute(ActionEvent event, String name) {
return (String) event.getComponent().getAttributes().get(name);
}
}
Переменные attributeName1 и attributeName2 теперь должны содержать значения attributeValue1 и attributeValue2 соответственно.
Позаботьтесь о том, чтобы каждое имя атрибута было уникальным и не переписывало какие-либо атрибуты компонента по умолчанию, такие как «id», «name», «value», «binding», «render» и т. Д.