我正在尝试翻译C#API的功能,而且我已经找到了一些我找不到自信解决方案的代码。
它涉及将数据存储在正确的Web上下文范围内。现在我可以简单地通过制作一个HashMap来修复这个问题,但由于我不知道此时存储的数据的扩展需求,我想尽力去做正确的事情。在我试图找到一个同样的java解决方案时,我遇到了一个我以前不知道的范围,即Flash范围。看起来它和HttpContext.Current.Items一样,但我肯定会对此有第二点意见。我在playframework中发现了flashScope。
此外,HttpContext.Current.Items似乎是以静态方式访问的,而java通常会创建范围类的对象实例,如HttpSession。
我可以静态地将对象存储在作用域词典中,例如下面的C#代码吗?
Flash范围是否等同于HttpContext.Current.Items
?
我可以在没有Play框架的情况下访问Flash Scope吗?
与往常一样,如果我做出任何错误的假设或其他误解,我也非常感激。
谢谢:)
C#方法
public void setItem(String itemName, Object item) {
HttpContext.Current.Items.set(itemName, item);
}
答案 0 :(得分:0)
HttpServletRequest
使用setattribute()
方法。
答案 1 :(得分:0)
此页面提供了有关该主题的大量有用信息: getDate()
最重要的一行是:
HttpContext对象将封装单个的特定细节 HTTP请求。该类的属性包括Request对象 响应对象,Session对象和AllErrors属性 保留当前在当前累积的Exception对象数组 请求。
...
Current是一个静态属性,它将返回HttpContext对象 对于当前的HTTP请求。您可以使用来自任何对象的Current 请求的逻辑执行线程
getAttribute()
中的数据虽然以静态方式访问,但其范围限定为单个请求。换句话说,假设使用javas HttpServletRequest及其方法setAttribute()
和def wrap_commands_in_shell(commands):
return "/bin/bash -c 'set -e; set -o pipefail; {}; wait'".format(';'.join(commands))
job_tasks = ['cd /mnt/batch/tasks/shared/ && git clone https://github.com/cryptobiu/OSPSI.git',
'cd /mnt/batch/tasks/shared/OSPSI && git checkout cloud',
'cd /mnt/batch/tasks/shared/OSPSI && cmake CMake',
'cd /mnt/batch/tasks/shared/OSPSI && mkdir -p assets'
]
job_creation_information = batch.models.JobAddParameter(job_id, batch.models.PoolInformation(pool_id=pool_id),
job_preparation_task=batch.models.JobPreparationTask(
command_line=wrap_commands_in_shell(
job_tasks),
run_elevated=True,
wait_for_success=True
)
)
就足够了,但翻译后的框架应该用于应用程序。