Another example using
HTMX.
[CODE lang="b4x" title="IndexView"]Sub Class_Globals
Private Response As ServletResponse
End Sub
Public Sub Initialize (req As ServletRequest, resp As ServletResponse)
Response = resp
End Sub
Public Sub Render
Dim strHtml As String = $"<center>
<button hx-put="/demo/messages" style="padding: 10px">
Put To Messages
</button>
<p>
<input type="text" name="q"
hx-get="/demo/trigger_delay"
hx-trigger="keyup changed delay:500ms"
hx-target="#search-results"
placeholder="Search...">
<div id="search-results" style="margin-top: 60px">No result</div>
</p>
</center>
<script src="https://unpkg.com/
[email protected]" integrity="sha384-wS5l5IKJBvK6sPTKa2WZ1js3d947pvWXbPJ1OmWfEuxLgeHcEbjUUA5i9V5ZkpCw" crossorigin="anonymous"></script>
"$
EndsMeetUtils.ReturnHtml(strHtml, Response)
End Sub[/CODE]
[CODE lang="b4x" title="WebHandler" highlight="46-57"]Sub Class_Globals
Private Request As ServletRequest
Private Response As ServletResponse
End Sub
Public Sub Initialize
End Sub
Sub Handle (req As ServletRequest, resp As ServletResponse)
Request = req
Response = resp
ProcessRequest
End Sub
Private Sub ProcessRequest
Log($"[${Request.Method}] ${Request.RequestURI}"$)
If EndsMeetUtils.isWebRequest(Request.RequestURI, Main.BaseElements) = False Then
Response.SendError(400, "Bad Request")
Return
End If
Dim RequestMap As Map = EndsMeetUtils.GetRequestElements(Request.RequestURI, Main.BaseElements)
Dim Path As String = RequestMap.Get("Path")
If Path.EqualsIgnoreCase(Main.BaseElements.Path.Element) = False Then
Response.SendError(400, "Bad Request")
Return
End If
Select RequestMap.Size
Case 1 ' root
Log(RequestMap)
Case 2 ' path (demo)
Dim Index As IndexView
Index.Initialize(Request, Response)
Index.Render
Return
Case Else
Dim Controller As String = RequestMap.Get("Controller")
Select Controller
Case "hello"
Dim Hello As HelloController
Hello.Initialize(Request, Response)
Hello.RouteWeb
Return
Case "messages"
DateTime.DateFormat = "dd/MM/yyyy HH:mm:ssa"
Response.Write(DateTime.Date(DateTime.Now))
Return
Case "trigger_delay"
Dim q As String = Request.GetParameter("q")
If q = "" Then
Response.Write("No result")
Else
Response.Write(q)
End If
Return
End Select
End Select
Response.SendError(400, "Bad Request")
End Sub[/CODE]