Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java <;h:选择一个功能表>;不';不要解雇听众_Java_Jsf_Richfaces - Fatal编程技术网

Java <;h:选择一个功能表>;不';不要解雇听众

Java <;h:选择一个功能表>;不';不要解雇听众,java,jsf,richfaces,Java,Jsf,Richfaces,我不熟悉JSF主题,并开发了一个简单的web对话框: 我目前的问题是:我的selectOneMenu组件不会启动actionListener,也不会重新启动其他组件。 这是我的JSF页面: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <%@page language="java" contentType="text/html; charset=ISO-8859-1" pageEncodi

我不熟悉JSF主题,并开发了一个简单的web对话框: 我目前的问题是:我的selectOneMenu组件不会启动actionListener,也不会重新启动其他组件。 这是我的JSF页面:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@ taglib uri="http://richfaces.org/rich" prefix="rich"%>
<%@ taglib uri="http://richfaces.org/a4j" prefix="a4j"%>


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta http-equiv="cache-control" content="no-cache, must-revalidate">
<link href='styles/kn.css' rel="styleSheet" type="text/css" />
</head>

<style>
.top {
    vertical-align: top;
}
</style>

<body>

    <f:view>

        <f:loadBundle basename="messages" var="msg" />

        <h:form id="navigation">
            <%@include file="include/kn_header.jsp"%>
        </h:form>
        <h:form >
            <rich:panel styleClass="mainPanel" header="#{msg.log_title}"
                id="logviewer">



                <h:selectOneMenu value="#{logviewer.machine} " onchange="submit()" immediate="true">
                    <f:selectItems value="#{logviewer.machineList}" />
                    <a4j:support event="onchange"
                        actionListener="#{logviewer.processValueChanged}"
                        ajaxSingle="true" immediate="true" reRender="progressPanel" />
                </h:selectOneMenu>

                <rich:spacer height="10px" />
                <a4j:outputPanel id="progressPanel"
                    rendered="#{logviewer.isMachine}">
                    <rich:progressBar value="#{logviewer.currentValue}" interval="1000"
                        label="#{logviewer.currentValue} %" enabled="#{logviewer.enabled}"
                        minValue="-1" maxValue="100" reRenderAfterComplete="progressPanel">
                        <f:facet name="initial">
                            <br />
                            <a4j:commandButton action="#{logviewer.startProcess}"
                                value="Start Download" reRender="progressPanel"
                                rendered="#{logviewer.buttonRendered}"
                                style="margin: 9px 0px 5px;" />

                        </f:facet>
                        <f:facet name="complete">
                            <br />
                            <rich:spacer height="10px" />
                            <a4j:commandButton id="doDownload"
                                action="#{logviewer.doDownload}" value="button"
                                alt="#{msg.download}" title="#{msg.download}"
                                image="#{icon.download}">

                                <rich:toolTip value="#{msg.download}"
                                    style="background-color:#{richSkin.generalBackgroundColor}; border-color:#{richSkin.headerBackgroundColor}">
                                </rich:toolTip>

                            </a4j:commandButton>
                            <div class="TextArea">
                                <rich:panel styleClass="mainPanel">
                                    <h:inputTextarea id="logView" value="#{logviewer.log}"
                                        rows="35" style="font-size:10pt; width:100%" readonly="true" />
                                </rich:panel>
                            </div>
                        </f:facet>
                    </rich:progressBar>
                </a4j:outputPanel>


            </rich:panel>
        </h:form>

    </f:view>
</body>
</html>

.顶{
垂直对齐:顶部;
}


他是我的豆:

package com.kn.documentserver.jsf;

import java.util.ArrayList;
import java.util.List;

import javax.faces.event.ValueChangeEvent;
import javax.faces.model.SelectItem;


import com.kn.commons.util.BeanLocator;
import com.kn.dcs.distribution.DownloadFile;
import com.kn.documentserver.entity.Machine;
import com.kn.documentserver.interfaces.IMachine;

public class LogviewerBean extends AbstractBean {

    // private final static Logger LOG =
    // Logger.getLogger(AdministrationBean.class);

    private List<SelectItem> machineList;

    private Machine machine;
    private int maxlength;
    private String logfile= null;
    private DownloadFile logFile;
    private boolean buttonRendered = true;
    private boolean enabled = false;
    IMachine s = BeanLocator.lookup(IMachine.class,
            "java:global/KN_DocumentServerFrontendJBoss/MachineBean");

    public LogviewerBean() {
        super();
        machineList = new ArrayList<SelectItem>(); 
        initMachineList(readMachineList());
    }

    private List<Machine> readMachineList() {

        return s.findAll();
    }

    private void initMachineList(List<Machine> machines) {
        for (Machine m : machines) {
            if (m.getMachineName().contains("KN")
                    && !m.getMachineName().equals("ASKNGHST")
                    && !m.getMachineName().equals("ASKNITRA")) {
                SelectItem item= new SelectItem(m.getMachineName(),m.getMachineName());
            machineList.add(item);
            }
        }
    }

    public List<SelectItem> getMachineList() {
        return machineList;
    }
    public void changeEvent() {
        System.out.println("Works");
    }

    public void setMachineList(List<SelectItem> machineList) {
        this.machineList = machineList;
    }

    public Machine getMachine() {
        return machine;
    }

    public String getLog() {
        return logfile;
    }

//  public GenericConverter getMachineConverter() {
//      
//      return new GenericConverter(machineList.values());
//  }

    public void setMachine(Machine machine) {

        this.machine = machine;
    }

    public String processValueChanged(ValueChangeEvent vce) {
        String temp = (String) vce.getNewValue();
        this.machine=s.findByName(temp);
        return null;

    }

    public void doshowLog() {
        setMachine(this.machine);

    }

    public int getMaxlength() {
        return maxlength;
    }

    public void setMaxlength(int maxlength) {
        this.maxlength = maxlength;
    }

    public boolean getIsMachine() {
        return (this.machine == null) ? false : true;
    }

    public String getLogfile() {
        return logfile;
    }

    public String startProcess() {
        setEnabled(true);
        setButtonRendered(false);
        logFile = new DownloadFile(machine);
        System.out.println(getTotalValue());
        logFile.start();
        return null;
    }

    public void setLogfile() {
        byte[] bytes = logFile.getLogfileAsbyte();
        if (bytes != null) {
            this.logfile = new String(bytes);
        }

    }

    public boolean getIsLogfileDownloaded() {
        return (this.logfile == null) ? false : true;
    }

    public long getTotalValue() {
        return logFile.getFilelength();
    }

    public Long getCurrentValue() {
        if (isEnabled()) {
            Long current = new Long(logFile.getCurrfilelength());
            current = (current * 100) / getTotalValue();
            if (current >= 100) {
                setButtonRendered(true);
                setLogfile();
                return Long.valueOf(101);
            } else {
                return current;
            }

        } else {
            return Long.valueOf(-1);
        }

    }

    public boolean isEnabled() {
        return enabled;
    }

    public void setEnabled(boolean enabled) {
        this.enabled = enabled;
    }

    public boolean isButtonRendered() {
        return buttonRendered;
    }

    public void setButtonRendered(boolean buttonRendered) {
        this.buttonRendered = buttonRendered;
    }




}
package com.kn.documentserver.jsf;
导入java.util.ArrayList;
导入java.util.List;
导入javax.faces.event.ValueChangeEvent;
导入javax.faces.model.SelectItem;
导入com.kn.commons.util.BeanLocator;
导入com.kn.dcs.distribution.DownloadFile;
导入com.kn.documentserver.entity.Machine;
导入com.kn.documentserver.interfaces.IMachine;
公共类LogviewerBean扩展了AbstractBean{
//专用最终静态记录器日志=
//getLogger(AdministrationBean.class);
私人名单机械师;
私人机器;
私有整数最大长度;
私有字符串logfile=null;
私有下载文件日志文件;
private boolean buttonRendered=true;
启用私有布尔值=false;
IMachine s=BeanLocator.lookup(IMachine.class,
“java:global/KN_DocumentServerFrontendJBoss/MachineBean”);
公共LogviewerBean(){
超级();
machineList=新的ArrayList();
initMachineList(readMachineList());
}
私有列表readMachineList(){
返回s.findAll();
}
私有void initMachineList(列出机器){
用于(机器m:机器){
如果(m.getMachineName()包含(“KN”)
&&!m.getMachineName().equals(“ASKNGHST”)
&&!m.getMachineName().equals(“ASKNITRA”)){
SelectItem item=newselectItem(m.getMachineName(),m.getMachineName());
机械师添加(项目);
}
}
}
公共列表getMachineList(){
返回机械师;
}
public void changevent(){
System.out.println(“工程”);
}
public void setMachineList(列表machineList){
this.machineList=machineList;
}
公共机器getMachine(){
返回机;
}
公共字符串getLog(){
返回日志文件;
}
//公共GenericConverter getMachineConverter(){
//      
//返回新的GenericConverter(machineList.values());
//  }
公共无效设置机器(机器){
这个机器=机器;
}
公共字符串processValueChanged(ValueChangeEvent vce){
字符串温度=(字符串)vce.getNewValue();
this.machine=s.findByName(temp);
返回null;
}
公共无效doshowLog(){
设置机器(this.machine);
}
public int getMaxlength(){
返回最大长度;
}
公共void setMaxlength(int maxlength){
this.maxlength=maxlength;
}
公共布尔getIsMachine(){
返回(this.machine==null)?false:true;
}
公共字符串getLogfile(){
返回日志文件;
}
公共字符串startProcess(){
setEnabled(真);
setButtonRendered(假);
日志文件=新下载文件(机器);
System.out.println(getTotalValue());
logFile.start();
返回null;
}
public void setLogfile(){
byte[]bytes=logFile.getLogfileAsbyte();
如果(字节数!=null){
this.logfile=新字符串(字节);
}
}
公共布尔getIsLogfileDownloaded(){
返回(this.logfile==null)?false:true;
}
公共长getTotalValue(){
返回logFile.getFilelength();
}
公共长getCurrentValue(){
如果(isEnabled()){
Long current=new Long(logFile.getCurrfilelength());
当前=(当前*100)/getTotalValue();
如果(当前>=100){
setButtonRendered(true);
setLogfile();
长期回报率(101);
}否则{
回流;
}
}否则{
返回Long.valueOf(-1);
}
}
公共布尔值isEnabled(){
返回启用;
}
已启用公共void集(已启用布尔值){
this.enabled=已启用;
}
公共布尔值isButtonRendered(){
返回按钮未指定;
}
public void setButtonRendered(布尔按钮rendered){
this.buttonRendered=buttonRendered;
}
}
你能帮我调查一下到底出了什么问题吗

问候
Alex

如果您使用的是JSF 1.2或更高版本,请在第二个表单(包含selectOneMenu)中添加prependId=“false”。否则(使用1.2之前的JSF),您需要为表单设置一个id,并将其添加到reRender(reRender=“formId:progressPanel”)

您使用的是哪个JSF版本?我想2.0版请确定确切的JSF版本。所有代码都是JSF1.2风格的,您使用的是JSP而不是Facelets,而JSP由于JSF2.0而被弃用。至于具体问题,请排除第5点,谢谢您的重播。我已经将id添加到表单:和reRender:reRender=“log:progressPanel”中,不幸的是它不起作用。Bean类中的方法没有调用。很抱歉,太晚了。你能确定你妈妈的方法吗