Ad

Server-side Rendering Of Java, ReactJs Code On A Web Browser

What do I need to do to render this on browser? The code below currently works and renders on Eclipse Console. I need to use this code with a server like Tomcat and display it on browser with localhost. Please advice.

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import java.io.FileReader;
public class Test {
    private ScriptEngine se;
    // Constructor, sets up React and the Component
    public Test() throws Throwable {
        ScriptEngineManager sem = new ScriptEngineManager();
        se = sem.getEngineByName("nashorn");
        // React depends on the "global" variable
        se.eval("var global = this");
        // eval react.js
        se.eval(new FileReader("../react-0.14.7/build/react.js"));
        // This would also be an external JS file
        String component =
            "var MyComponent = React.createClass({" +
            "   render: function() {" +
            "       return React.DOM.div(null, this.props.text)" +
            "   }" +
            "});";
        se.eval(component);
    }
    // Render the component, which can be called multiple times
    public void render(String text) throws Throwable {
        String render =
            "React.renderToString(React.createFactory(MyComponent)({" +
            // using JSONObject here would be cleaner obviously
            "   text: '" + text + "'" +
            "}))";
        System.out.println(se.eval(render));
    }
    public static void main(String... args) throws Throwable {
        Test test = new Test();
        test.render("I want to Display");
        test.render("This on a Browser like google chrome, using Tomcat server with Eclipse, currently it displays on Console in Eclipse.");
    }
}
Ad

Answer

Many possibilities are there. One quite commonly used will be to go for REST services. You can host REST services using JAX-RS or Spring REST support. Put your web pages as a simple html page. Once this page will be loaded, it will make a REST call, will get the data and will show it to the user.

Ad
source: stackoverflow.com
Ad