Мне нужно иметь возможность открывать мое приложение, вводить данные через TextFields, отправлять указанные данные через FreeMarker и генерировать HTML, а затем отображать в WebView.JavaFX WebView: запуск программы, ввод данных, обслуживание и отображение локального HTML -> обновление данных = обновление WebView
Здесь я падаю.
У меня все работает, но я не могу, для жизни меня, выяснить, как обновить WebView, чтобы отобразить НОВЫЙ текущий HTML-документ после ввода данных и переписать.
Это переписывает файл в порядке, если я закрываю и снова открываю, а затем повторно нажимаю кнопку, WebView теперь показывает новые данные.
Я уверен, что проблема в том, что я использую GetClass() getResource (String):.
URL link = getClass().getResource("EmailSigTest.html");
engine = webView.getEngine();
engine.load(link.toString());
Как я могу получить эту вещь, чтобы изменить динамически, то есть:
1. Input data
2. Write File
3. Refresh WebView to reflect new html doc
Где мне нужно писать и читать файл туда и обратно, чтобы это произошло?
Я пробовал engine.reload(); для перезагрузки WebEngine ... ничего.
Я попытался добавить ActionEvent и .reload() ... ничего.
Полный Источник Ниже:
public class SignatureGenFXMLDocController implements Initializable {
private String firstName, lastName, directLine, title, cellPhone, lineOne, lineTwo;
boolean social = false;
@FXML private TextField txtFirstName, txtLastName, txtDirectLine, txtTitle, txtCellPhone;
@FXML private CheckBox chkSocialIcons;
@FXML Button btnGenerate;
@FXML WebView webView;
@FXML WebEngine engine;
@FXML private void handleButtonAction(ActionEvent event) throws InterruptedException {
System.out.println("You clicked me!");
firstName = txtFirstName.getText();
lastName = txtLastName.getText();
directLine = txtDirectLine.getText();
title = txtTitle.getText();
cellPhone = txtCellPhone.getText();
writeHtml();
readHtml();
}
@Override
public void initialize(URL url, ResourceBundle rb) {
}
private void writeHtml(){
// Configurae Freemarker
Configuration cfg = new Configuration();
try {
// Load the template
Template template = cfg.getTemplate("src/signaturegen/template.ftl");
Map<String, Object> data = new HashMap<String, Object>();
data.put("fName", firstName);
data.put("lName", lastName);
data.put("title", title);
data.put("dLine", directLine);
data.put("social", social);
Writer console = new OutputStreamWriter(System.out);
template.process(data, console);
console.flush();
// File output
Writer file = new FileWriter (new File("build/classes/signaturegen/EmailSigTest.html"));
template.process(data, file);
file.flush();
file.close();
} catch (IOException e) {
e.printStackTrace();
} catch (TemplateException e) {
e.printStackTrace();
}
}
private void readHtml(){
URL link = getClass().getResource("EmailSigTest.html");
engine = webView.getEngine();
engine.load(link.toString());
}
}