2017-03-19 3 views
0

コマンドボタンでこの例外が発生する:HTTPステータス500 - /encryption.xhtml @ 17,110 action = "#{encryptBean.encrypt(#{encryptBean.path})}"式を解析できませんでした[#{encryptBean.encrypt(# {encryptBean.path})}]xhtmlからバッキングBeanメソッドにパラメータを渡すにはどうすればよいですか?

<?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

あなたが/管理対象Beanにpathフィールドを読み書きしながら、あなただけのようなパラメータを指定せずにアクションボタンメソッドを作るかもしれません:

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

し、それに応じて方法の署名で:

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

方法を非スタティックにして、フィールドpathの使用を有効にするか、または両方をstaticにします。最初のアプローチを使用することをお勧めします。

+0

encrypt()は静的なため、_path_プロパティを使用することはできません。彼はキーワードも削除する必要があります。 –

+0

あなたは正しいです、ありがとう。編集されました。 – Omar

関連する問題