我正在尝试开发一个网络服务,其中一个功能是在用户单击时设置按钮的颜色。之前我尝试使用 JavaScript 进行设置,但无法永久保留颜色变化 (see previous post here) 。我想做的是让用户选择多个按钮,然后根据所选按钮提交信息(类似于复选框,但使用按钮对触摸屏友好)。
如何将信息从我的 Java Servlet 发送到我的 .jsp 文件以指示按钮的颜色?
<---JAVA Servlet --->
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
if (request.getParameter("TV1") != null){
toggleButton(1, request);
}
}
public void toggleButton(int targetNum, HttpServletRequest req){
//button previously selected.. go to deselect..
if (pressedOnce[targetNum] == true){
pressedOnce[targetNum] = false;
req.setAttribute("buttonColor","yellow");
}
//button not selected previously.. go to select..
else{
targetsSelected[targetNum] = targetNum; //TV1 selected
pressedOnce[targetNum] = true;
req.setAttribute("buttonColor","green");
}
}
<--- JSP ---->
<style type="text/css">
.button {color:green;
background-color: <%= request.getAttribute("buttonColor") %>;
font-size: 150%;
font-family: Arial Black;
width:<%=(buttonWidth+"px")%>;
height:<%=(buttonHeight+"px")%>}
...
<form action="FirstServlet" method="get">
<div id="TVs">
<%for (int i=1; i<=numTargets; i++) {
<button id="TV<%=i%>" name= "TV<%=i%>" class="button">
<%}%>
有没有办法从 JavaServlet 设置 JSP 中的样式类或背景颜色?当我尝试 setAttribute("buttonColor", "yellow"); 时什么都没发生。我知道我在这里错过了一些基本的东西..但如果有人可以帮助我,我将非常感激!
最佳答案
尝试在用户 session 而不是用户请求上设置您想要的值。
并且不要在 servlet 中使用实例属性(例如 pressedOnce);
因此,尝试将变量 pressedOnce 添加到用户 session 中。这样:
req.getSession().setAttribute("pressedOnceAttribute", pressedOnce);
现在该对象已绑定(bind)到该特定用户 session 。
现在,每次用户点击 servlet 时,您都需要查看该用户是否已经有一个 session 。
请参阅此处了解更多信息:
http://oak.cs.ucla.edu/cs144/projects/project5/session_tutorial.html
关于java - 设置来自 Java Servlet 的 http 请求的按钮颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20788679/