我试图将此scriptlet代码转换为JSF类.
视图代码
<f:view>
<h:form binding="#{jsfSocketClient.form}">
<h:outputText binding="#{jsfSocketClient.text}"/>
</h:form>
</f:view>
Run Code Online (Sandbox Code Playgroud)
和java代码
private HtmlForm form = new HtmlForm();
private HtmlOutputText text = new HtmlOutputText();
public HtmlForm getForm()
{
System.out.println("instance: "+FacesContext.getCurrentInstance().getResponseWriter());
ResponseWriter writer = (FacesContext.getCurrentInstance()).getResponseWriter();
try{
int character;
Socket socket = new Socket("127.0.0.1", 8765);
InputStream inSocket = socket.getInputStream();
OutputStream outSocket = socket.getOutputStream();
String str = "Hello!\n";
byte buffer[] = str.getBytes();
outSocket.write(buffer);
char characters = 0;
while ((character = inSocket.read()) != -1) {
text.setValue((char)character);
//writer.write((char)character);
//characters += (char)character;
}
//text.setValue(characters);
if(str.equalsIgnoreCase("bye"))
{ …Run Code Online (Sandbox Code Playgroud) 我一直在寻找如何正确执行此操作,但找不到有关如何执行此操作的明确指南。
我知道您不能在标签内使用表达式,但我不确定我还应该如何处理它。
我已经看到了很多答案,但没有太多解释或帮助。
本质上我希望像下面这样的东西能够工作,但显然不行。
<c:forEach items="${dataposition.rows}" var="lineposition" begin="0" varStatus="status">
<c:set var="name_${status.count}" value="${lineposition.value}" scope="session"/>
</c:forEach>
Run Code Online (Sandbox Code Playgroud)
确切的错误消息是
“根据标记文件中的 TLD 或属性描述符,属性 var 不接受任何表达式”
实现这一目标的正确方法是什么?
(我从实际代码中更改了变量名称,但希望您仍然明白)
如果我需要创建 java 对象或其他东西,我对此很满意,但我需要知道如何将它们包含在我的项目中以及如何在代码中使用它们。像列表这样的东西听起来不错。
我创建了一个对象来保存我的价值观。
<jsp:useBean id="myid" class="myclass" scope="session"/>
Run Code Online (Sandbox Code Playgroud)
我想使用它,但不确定如何使用:
<c:forEach items="${dataposition.rows}" var="lineposition" begin="0" varStatus="status">
<%
myid.add_position(lineposition.var1, lineposition.var2, lineposition.var3, lineposition.var4, lineposition.var5);
%>
</c:forEach>
Run Code Online (Sandbox Code Playgroud) 在jstl中使用scriptlet变量的正确方法是什么?我不知道我的代码有什么问题:
<%
boolean a = true;
boolean b = false;
%>
<c:choose>
<c:when test="${a}">
<c:set var="x" value="It's true"/>
</c:when>
<c:when test="${b}">
<c:set var="x" value="It's false"/>
</c:when>
</c:choose>
Run Code Online (Sandbox Code Playgroud)
看起来它并没有进入整个区块.
在我的项目中,我每次打开JSP时都要对变量进行设置.我<% %>在JSP和EL中使用scriptlet尝试了它,${}它给出了变量.
但它似乎不起作用.
<% String korrekteAntwort=${frage.korrekteAntwort};%>
<%session.setAttribute("korrekteAntwort", korrekteAntwort);%>
Run Code Online (Sandbox Code Playgroud)
之后有一个错误korrekteAntwort=${},是不是可以在scriptlet中直接从EL中转换变量?
我有一个错误:
%post(blabla.i386) scriptlet failed, exit status 1
Run Code Online (Sandbox Code Playgroud)
这个scriptlet在哪里?
我希望在Jsp onClick中调用一个方法,该方法在同一个Jsp里面的scriptlet上.
我应该如何存档?
<%@ page import="java.io.*,java.lang.*,java.util.*,java.net.*,java.util.*,java.text.*"%>
<%@ page import="javax.activation.*,javax.mail.*,org.apache.commons.*"%>
<%@ page import="javax.servlet.http.*,javax.servlet.*"%>
<%!
public String sendMail(String to, String sub, String msg) {
String res = null;
System.out.println("HI");
return res;
}%>
<html>
<head>
<title>Send Email using JSP</title>
</head>
<body>
<center>
<h1>Send Email using JSP</h1>
</center>
<form>
<label>Email To</label><br />
<input type="text" name="to" /><br />
<label>Subject</label><br />
<input type="text" name="sub" /><br />
<label for="body">Message</label><br />
<input type="text" name="msg" /><br />
<input type="submit" onClick="sendMail( to, sub, msg )"/>
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
注意:方法名称是"sendMail" …
我开始学习有关 JSTL 标签的教程。使用的存储库教程太旧了,所以我想使用一些较新的版本尝试我的方式。不幸的是,我现在被困住了。我会告诉你我做了什么,所以我希望你能帮助我。
我从这两个链接下载了2个jar文件:api,implementation。
我得到的 Jar 文件,我复制到了里面WebContent/Web-INF/lib。现在,如果我这样做,我会收到错误:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<body>
<c:set var="varA" value="hello world" />
<%=varA %> //varA cannot be resolved to a variable
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
老实说,我不知道为什么当jar文件实际上在我的项目lib文件夹中时我们需要 import 语句。另外,有谁知道这里出了什么问题以及为什么编辑器找不到我的变量varA?
我有:一个名为"LoginBean"的托管bean.一个名为"login.xhtml"的JSF页面
在这个jsf页面中,我有一个登录表单.
在managebean内部,我有一个loginCheck函数.
public void loginCheck(){
if(logincorrect){
//set user session
}else{
//set lockout count session ++
}
}
Run Code Online (Sandbox Code Playgroud)
我想在jsf页面中做的是当锁定计数会话== 2时(意味着用户无法正确登录2次,我需要显示一个重回标签).
<td>
<%
if(FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("numberOfLogins") == 2){
<p:captcha label="Captcha" requiredMessage="Oops, are you human?"/>
}
%>
Run Code Online (Sandbox Code Playgroud)
显然,<%标签不起作用.感谢java/jsf专家提供的任何帮助.
我需要关于如何打印我从 Jsp 中的 Servlet 获取的结果集的帮助,这里是 Servlet 代码:
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class EditRecord extends HttpServlet {
private static final long serialVersionUID = 1L;
Connection con;
Statement stmt;
ResultSet rs;
DBConnection dbconn;
String sql;
HttpSession session;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPerform(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPerform(request, response);
} …Run Code Online (Sandbox Code Playgroud) 我已经听过十亿次关于在 JSP 中使用 Scriptlet(那些类似 php 的<% %>东西)是多么可怕的事情了。
既然 scriptlet 不需要任何用途,并且可以用 JSTL、其他标记库和 EL(表达式语言)替换,为什么它们仍然存在?为什么 Oracle 还没有从 JSP 技术中删除这些 scriptlet?