Can you call class methods from inside a view page?
Specifically ones that are not passed into the view?
In asp.net MVC I can do this:
<%= SomeClass.FixDateFormat(ViewData.Model.SomeClass.DateCreated) %>
A static method provides NO reference to an instance of its class (it is a class method) hence, no, you cannot call a non-static method inside a static one.
But when we try to call Non static function i.e, TestMethod() inside static function it gives an error - “An object refernce is required for non-static field, member or Property 'Program. TestMethod()”. So we need to create an instance of the class to call the non-static method.
Java syntax allows calling static methods from an instance. For example, we could create this code and it would compile and run correctly: public static void main(String args) { Example ex = new Example();
If we call a static method by using the parent class object, the original static method will be called from the parent class. If we call a static method by using the child class object, the static method of the child class will be called.
Since this came up in the top of my google search on this topic it seems like folks might like to see an updated answer when they get this on the top of their search...
(found this here: http://velocity.10973.n7.nabble.com/Use-of-static-functions-td15126.html)
in Velocity 1.5 or earlier, you can just use:
#set( $String = '' ) #set( $foo = $String.format('%.1f', $dataFedIn) )
because you can always call static methods on instances. :)
however, since there are some static classes of which you cannot create instances (e.g. java.util.Math), we added support in 1.6 for static class methods sans instances:
Java:
context.put("String", String.class);
Velocity:
#set( $foo = $String.format('%.1f', $dataFedIn) )
Here is a universal way to call any static method of any class without need for preliminarily context manipulation:
#set($str='test')## #set($Base64=$str.class.forName('java.util.Base64'))## $Base64.getEncoder().encodeToString($str.getBytes('utf8'))
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With