Jak ustawić metodę przeciążania w aplikacji Application.java w programie Play Project?Metoda przeciążania w aplikacji Application.java Play Framework
Oto przykład, co mam aktualnie robi:
Application.java
public class Application extends Controller {
public static void index() {
render();
}
public static void getData() {
renderText("Without Parameter");
}
public static void getData(String name) {
renderText("With Parameter name = " + name);
}
}
trasy
# Routes
# This file defines all application routes (Higher priority routes first)
# ~~~~
# Home page
GET / Application.index
GET /data Application.getData
# Ignore favicon requests
GET /favicon.ico 404
# Map static resources from the /app/public folder to the /public path
GET /public/ staticDir:public
# Catch all
* /{controller}/{action} {controller}.{action}
Test:
- połączeń
getData
bez parametruhttp://localhost:9000/data
- połączeń
getData
parametremhttp://localhost:9000/data?name=test
Rezultat:
- Z Nazwa parametru = null
- Z Nazwa parametru = test
co chcę dla wyniku:
- bez podania
- z nazwą parametru = testu
Jestem bardzo cenione z Twojego pomaga. Dziękuję ...
Aktualizacja Rozwiązanie
Oto, co robię na podstawie Daniel Alexiuc sugestia:
Application.java
public class Application extends Controller {
public static void index() {
render();
}
public static void getData() {
/**
* Do some process before call getDataName method
* and send the result of the process as the parameter.
* That's why I do this way that look like redundancy process.
**/
getDataName(null);
}
public static void getDataName(String name) {
// Didn't use ternary operation here because will become error 'not a statement'
if(name == null)
renderText("Without Parameter");
else
renderText("With Parameter name = " + name);
}
}
tras
GET / Application.index
GET /default Application.getData
GET /dataString Application.getDataName
Aktualizacja Rozwiązanie (26/07)
Application.java
public class Application extends Controller {
public static void index() {
render();
}
public static void getData(String name, Integer age) {
if (name == null && age == null) {
renderText("Data null");
} else if (name != null && age == null) {
renderText("Name: " + name);
} else if (name != null && age != null) {
renderText("Name: " + name + "\n" + "Age: " + age);
}
}
}
trasy
GET /data Application.getData
GET /data/{name} Application.getData
GET /data/{name}/{age} Application.getData
I dla wywołania:
1. http://localhost:9000/data -> Display "Data null"
2. http://localhost:9000/data/Crazenezz -> Display "Name: Crazenezz"
3. http://localhost:9000/data/Crazenezz/24 -> Display "Name: Crazenezz
Age: 24"
Dziękuję za odpowiedź, pozwól zobaczyć, co inny ekspert mówi o tym problemie, czy to możliwe, czy nie. – Crazenezz
Próbowałem na wiele sposobów i nie znalazłem innego możliwego. Więc zdecydowałem się na twój styl :-) – Crazenezz