2012-06-29 2 views
3

У меня есть страница Xhtml, где у меня есть outputlink с F: парые: пары и е: viewparam сеттера не называется

<h:outputLink value="#{formService.getStartFormData(v_process.id).formKey}"> Start <f:param name="processDefinitionKey" value="#{v_process.key}"></f:param> </h:outputLink>

в целевой странице, у меня есть мнение пары

f:metadata> 
     <!-- bind the key of the process to be started --> 
     <f:viewParam name="processDefinitionKey" value="#{processList.processDefinitionKey}"/> 

    </f:metadata> 

мой боб

@Named 
@RequestScoped 
public class ProcessList{ 

private String processDefinitionKey ; 

@Inject 
private RepositoryService repositoryService; 

@Produces 
@Named("processDefinitionList") 
public List<ProcessDefinition> getProcessDefinitionList() { 
return repositoryService.createProcessDefinitionQuery() 
     .list(); 
} 

public void setProcessDefinitionKey(String processDefinitionKey1) { 
    System.out.println("setProcessDefinitionKey "+processDefinitionKey1); 
this.processDefinitionKey = processDefinitionKey1; 
} 

public String getProcessDefinitionKey() { 
    System.out.println("getProcessDefinitionKey______ "+processDefinitionKey); 
return processDefinitionKey; 
} 


} 

processDefinitionKey имеет нулевое значение, сеттер не называется , что не так ? Есть ли какие-либо конфигурации в web.xml или faces-config.xml для добавления? в том же проекте я работаю с primefaces и яровой безопасности

это целая страница

<?xml version="1.0" encoding="UTF-8"?> 
<ui:composition xmlns="http://www.w3.org/1999/xhtml" 
xmlns:ui="http://java.sun.com/jsf/facelets" 
xmlns:f="http://java.sun.com/jsf/core" 
xmlns:h="http://java.sun.com/jsf/html" 
template="/WEB-INF/templates/template.xhtml"> 

<ui:define name="metadata"> 
    <f:metadata> 
     <!-- bind the key of the process to be started --> 
     <f:viewParam name="processDefinitionKey" value="#{processList.processDefinitionKey}" /> 
    </f:metadata> 
</ui:define> 

<ui:define name="content">  

Спасибо за ответ, пожалуйста, это не работает

+0

Я думаю, что вам не хватает сеттер для этого метода: 'общественного List getProcessDefinitionList()'. Можете ли вы попробовать это? –

+0

@cacho: Почему именно в этом конкретном случае нужен сеттер для этого свойства? – BalusC

+0

@BalusC: Потому что я думаю, что этот код представляет JSF Java Bean, следовательно, он должен иметь getter/setter для каждого свойства, верно? –

ответ

2

Пытаться изменить пространство имен, как posted already here. В моем случае (GlassFish 4.0) и в случае, связанном, это должно было быть

xmlns:ui="http://java.sun.com/jsf/facelets" 
xmlns:f="http://java.sun.com/jsf/core" 
xmlns:h="http://java.sun.com/jsf/html" 

но попробовать

xmlns:ui="http://xmlns.jcp.org/jsf/facelets" 
xmlns:f="http://xmlns.jcp.org/jsf/core" 
xmlns:h="http://xmlns.jcp.org/jsf/html" 

, который работал на Tomcat для меня.

Если у кого-то есть идея, почему так, я был бы счастлив здесь. Второй вариант должен быть правильным, что я read here.

1

Это ошибка JEE7. https://java.net/jira/browse/JAVASERVERFACES-2868 В работе в качестве обходного пути я поставил:

<ui:composition xmlns="http://www.w3.org/1999/xhtml" 
xmlns:h="http://xmlns.jcp.org/jsf/html" 
xmlns:ui="http://xmlns.jcp.org/jsf/facelets" 
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core" 
xmlns:f="http://xmlns.jcp.org/jsf/core" 
xmlns:oldf="http://java.sun.com/jsf/core" 
xmlns:p="http://primefaces.org/ui" 
template="/WEB-INF/templates/template.xhtml"> 
<oldf:metadata> 
    <oldf:viewAction action="#{chooseRoleBean.init()}" /> 
</oldf:metadata> 
+1

Просто обновите JSF impl. – BalusC

+0

@BalusC JSF 2.2.1 не представляется доступным через 'updatetool'. – tbodt

Смежные вопросы