JDK-8160326 : Char value is returned as integer, not as character
  • Type: Bug
  • Component: javafx
  • Sub-Component: web
  • Affected Version: 8,9
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • Submitted: 2016-06-27
  • Updated: 2017-09-11
  • Resolved: 2016-06-28
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 8 JDK 9
8u112Fixed 9 masterFixed
Related Reports
Relates :  
Description
 
import javafx.scene.Scene; 
import javafx.scene.layout.StackPane; 
import javafx.scene.web.WebEngine; 
import javafx.scene.web.WebView; 
import javafx.stage.Stage; 
import netscape.javascript.JSObject; 

public class CharBindingFailure extends Application { 
    public char c = 'm';
    public char doChar(char c) {
        return c;
    }
    @Override 
    public void start(Stage stage) throws Exception { 
        WebView view = new WebView(); 
        WebEngine engine = view.getEngine(); 
        stage.setScene(new Scene(new StackPane(view), 320, 240)); 
        stage.setOnShown((e) -> {
            JSObject window = (JSObject) engine.executeScript("window;"); 
            window.setMember("testObject", this);
            window.setMember("testValue", 'a');
            Object resultObject = engine.executeScript("testValue");
            System.out.println(resultObject instanceof Character);
            resultObject = engine.executeScript("testObject.doChar(testValue)");
            System.out.println(resultObject instanceof Character);
            resultObject = engine.executeScript("testObject.doChar('n')");
            System.out.println(resultObject instanceof Character);
            resultObject = engine.executeScript("testObject.c = 'hello world';");
            System.out.println(resultObject instanceof String);
            resultObject = engine.executeScript("testObject.c;");
            System.out.println(resultObject instanceof Character);
        }); 
        stage.show(); 
    } 
    public static void main(String[] args) { 
        launch(args); 
    } 
} 

Above code should print "true" all cases.
Comments
changeset: 7efb43132e32 user: arajkumar date: Tue Jun 28 16:12:24 2016 +0100 8160326: Char value is returned as integer, not as character Reviewed-by: mbilla, kcr URL: http://hg.openjdk.java.net/openjfx/9-dev/rt/rev/7efb43132e32
28-06-2016

+1
28-06-2016

+1
27-06-2016

Fixed typo: http://cr.openjdk.java.net/~arajkumar/8160326/webrev.01
27-06-2016

One minor Comment: Please correct spelling "foriegn object" in 3 .cpp files. Rest of the changes looks fine.
27-06-2016

http://cr.openjdk.java.net/~arajkumar/8160326/webrev.00/
27-06-2016