命令按钮导致此异常:HTTP状态500 - /encryption.xhtml @ 17,110 action =“#{encryptBean.encrypt(#{encryptBean.path})}”无法解析表达式[#{encryptBean.encrypt( #{encryptBean.path})}]
<?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) {}
}
}
答案 0 :(得分:0)
在读取/写入托管bean中的path
字段时,您可能只需要创建不带参数的操作按钮方法:
<h:commandButton ... action="#{encryptBean.encrypt()}"/>
因此在方法的签名中:
public static void encrypt(/* Nothing here */) throws IOException, Exception {
顺便说一句,您应该使用方法非静态来启用字段path
的使用,或者使它们都成为static
。更喜欢使用第一种方法。