我正在尝试在一个JSP页面上设置Lococale,但感觉它已经延迟了,或者我正在努力弄清楚为什么......
import socket
from struct import *
import time
s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_RAW)
def icmp():
global icmp_p
type = 8
code = 0
cs = 0
id = 0x0001
seq = 13
icmp_p = pack("!BBHHH", type, code, cs, id, seq)
return icmp_p
def ip_header():
global ip_p
ip_ihl = 5
ip_ver = 5
ip_tos = 0
ip_tot_len = 0
ip_id = 54321
ip_frag_off = 0
ip_ttl = 8
ip_proto = socket.IPPROTO_ICMP
ip_check = 1
ip_saddr = socket.inet_aton ( "1.1.1.1" )
ip_daddr = socket.inet_aton ( "192.168.1.3" )
ip_ihl_ver = (ip_ver << 4) + ip_ihl
ip_p = pack('!BBHHHBBH4s4s' , ip_ihl_ver, ip_tos, ip_tot_len, ip_id, ip_frag_off, ip_ttl, ip_proto, ip_check, ip_saddr, ip_daddr)
return ip_p
def packet():
global packet
packet = ip_p + icmp_p
print(packet)
icmp()
ip_header()
packet()
while True:
time.sleep(.1)
s.sendto(packet, ("192.168.1.3", 80))
我第一次加载http://localhost:8080/时,我会得到
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<c:set var="language" value="${not empty param.lang ? param.lang : not empty language ? language : 'en_HK'}" scope="session" />
<fmt:setBundle basename="i18n.common" scope="session"/>
<fmt:setLocale value="${language}" scope="session"/>
${language}
<fmt:message key="nav.home" />
我刷新页面:
en_HK 主页
然后我加载http://localhost:8080/?lang=zh_HK
en_HK Home
zh_HK Home
然后http://localhost:8080/?lang=zh_CN
zh_HK 主頁
我刷新页面
zh_CN 主頁
....我似乎只在下次加载页面时设置了语言环境....
请帮我看看有什么问题......
更多信息: 如果我没有将setLocale范围设置为session / application,它永远不会改变。
答案 0 :(得分:0)
这令人尴尬,因为那些可能在这里犯同样错误的人是问题:
setLocale应该在 setBundle之前被称为,即
<fmt:setLocale value="${language}"/>
<fmt:setBundle basename="text"/>