0

命令按钮导致此异常: HTTP 状态 500 - /encryption.xhtml @17,110 action="#{encryptBean.encrypt(#{encryptBean.path})}" 无法解析表达式 [#{encryptBean.encrypt(#{encryptBean 。小路})}]

    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" 
          xmlns:c="http://java.sun.com/jsf/core"
          xmlns:ui = "http://java.sun.com/jsf/facelets"
          xmlns:h = "http://java.sun.com/jsf/html">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    <title>encryption</title>
    </head>
    <h:body>
        <h:form>
            <h3>Please enter file path:</h3>

            <label>Path:</label>
            <h:inputText value="#{encryptBean.path}" />
            <h:commandButton value="Encrypt" type="submit" action="#{encryptBean.encrypt(#{encryptBean.path})}"/>
        </h:form>
    </h:body>
    </html>


package bean;

import java.io.IOException;
import java.io.PrintWriter;

import javax.faces.bean.ManagedBean;

import encryptor1.EncryptDecrypt;


@ManagedBean
public class EncryptBean 
{
    private String path="zzz";

    public String getPath() {
        return path;
    }

    public void setPath(String path) {
        this.path = path;
    }

    public static void encrypt(String path) throws IOException, Exception
    {
        //String path= "C:\\Users\\User\\Desktop\\secret.txt";
        String encrypted= EncryptDecrypt.encrypt(EncryptDecrypt.readFileAsString(path),path);
        try
        {
            PrintWriter writer = new PrintWriter(EncryptDecrypt.setFilePath(path,"_encrypted"), "UTF-8");
            writer.println(encrypted);
            writer.close();
        } catch (IOException e) {}          
    }


}
4

1 回答 1

0

当您在托管 bean 中读取/写入path字段时,您可能只是使操作按钮方法没有像这样的参数:

<h:commandButton ... action="#{encryptBean.encrypt()}"/>

因此在方法的签名中:

 public static void encrypt(/* Nothing here */) throws IOException, Exception {

顺便说一句,您应该使方法为非静态以启用该字段的使用path,或者同时使它们两者static。更喜欢使用第一种方法。

于 2017-03-19T14:51:32.380 回答