0

the command button causes this exception: HTTP Status 500 - /encryption.xhtml @17,110 action="#{encryptBean.encrypt(#{encryptBean.path})}" Failed to parse the expression [#{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) {}          
    }


}
BalusC
  • 1,082,665
  • 372
  • 3,610
  • 3,555
Spittoon
  • 1
  • 4

1 Answers1

0

While you read/write the path field in the managed bean, you might just make the action button method without parameter like that :

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

And accordingly in the method's signature :

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

You should by the way, make the method non static to enable the use of the field path, or make both of them static. Prefer to use the first approach.

Omar
  • 1,430
  • 1
  • 14
  • 31