setLocale似乎被推迟了

时间:2016-11-24 23:37:16

标签: java jsp jstl

我正在尝试在一个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

然后我加载http://localhost:8080/

zh_HK Home

然后http://localhost:8080/?lang=zh_CN

zh_HK 主頁

我刷新页面

zh_CN 主頁

....我似乎只在下次加载页面时设置了语言环境....

请帮我看看有什么问题......

更多信息: 如果我没有将setLocale范围设置为session / application,它永远不会改变。

1 个答案:

答案 0 :(得分:0)

这令人尴尬,因为那些可能在这里犯同样错误的人是问题:

setLocale应该在 setBundle之前被称为,即

<fmt:setLocale value="${language}"/>
<fmt:setBundle basename="text"/>