JSF 2.0 f:ajax submission java.lang.IllegalStateException错误:参数处理失败

时间:2012-11-25 12:08:10

标签: jsf

我使用JBOSS AS-7.1.1 Final和Seam 3.1.0 Final开发Web应用程序。我刚开始工作,但遇到了以下问题: 我有一个提交按钮,其中包含以下代码:

    <h:commandButton action="#{projectController.create}" value="Create Project" styleClass="greyishBtn submitForm">
        <f:ajax execute="@form" event="click" render="tblObject"/>
    </h:commandButton>

当我点击按钮时,会发生以下错误:

    java.lang.IllegalStateException error: Parameters processing failed.

动作不是触发器,但如果我删除标签,一切正常,只是非ajax。

这是后端代码:

    @Named
@RequestScoped
@Model
public class ProjectController implements Serializable {

/**
 * 
 */
private static final long serialVersionUID = 3572096930093985831L;

@Inject private EntityManager em;
@Inject private Logger log;
//@Inject private FacesContext facesContext;
@Inject private Event<Project> projectEventSrc;

private String projectId;

@Produces
@Named
private Project project;

private Query query;

private List<Project> projectList;
private List<ProjectDTO> projectDtoList;



public ProjectController() {
    // Default constructor.
}

@PostConstruct
public void postInit(){
    // Init project
    project = new Project();

    // Get project list.
    query = em.createQuery("select project from Project project");
    projectList = query.getResultList();
    projectDtoList = new ArrayList<ProjectDTO>();

    for(Project project : projectList){
        ProjectDTO projectDTO = new ProjectDTO();
        projectDTO.setProjectId(project.getProjectId());
        projectDTO.setProjectName(project.getProjectName());
        projectDTO.setProjectStatus(23.4d);
        // Add to list.
        projectDtoList.add(projectDTO);
    }

}

public void loadProject(){
    // Load project here based on project id.
    if(projectId == null){
        // Do nothing.
        return;
    }

    // Load from DB.
    project = em.find(Project.class, projectId);
}

/**
 * Create new project.
 * @throws Exception
 */
public void create() throws Exception{
    log.info("Creating: " + project.getProjectName());
    project.setProjectId(UUID.randomUUID().toString());
    em.persist(project);
    //facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Registered!", "Registration successful"));
    projectEventSrc.fire(project);

    // Reinit.
    project = new Project();
}

public void setProjectId(String projectId) {
    this.projectId = projectId;
}

public String getProjectId(){
    return this.projectId;
}


public List<Project> getProjectList() {
    return projectList;
}

public void setProjectList(List<Project> projectList) {
    this.projectList = projectList;
}

public List<ProjectDTO> getProjectDtoList() {
    return projectDtoList;
}

public void setProjectDtoList(List<ProjectDTO> projectDtoList) {
    this.projectDtoList = projectDtoList;
}

}

任何人都有任何想法?

3 个答案:

答案 0 :(得分:1)

这是JBoss AS 7.1.1中的一个错误,仅在使用IE浏览器时才会发生。另请参阅问题AS7-5143

截至目前,唯一的解决方案似乎是降级到JBoss AS 7.1.0。

答案 1 :(得分:0)

我有同样的问题,作为一种解决方法,如果你乐意加入第三方库,你可以使用PrimeFaces commandButton。它默认使用ajax,这似乎可以工作

答案 2 :(得分:0)

在我的情况下,出现问题的原因是我的一个自定义组件被渲染而没有属性“name”。 在编码方法中包含属性后,问题就消失了。 JBoss的。 7.1.1 / jsf 2.1.10 / Eclipse Juno