小编The*_*Hat的帖子

JAXB,在解组时如何验证可空字段和必填字段

我对JAXB有一个小问题,但是不幸的是我找不到答案。

我有一个Customer类,其中有两个字段namecity,映射是使用注释完成的,并且两个字段都标记为必填字段,并且不可为空。

@XmlRootElement(name = "customer")
public class Customer {

    enum City {
        PARIS, LONDON, WARSAW
    }

    @XmlElement(name = "name", required = true, nillable = false)
    public String name;
    @XmlElement(name = "city", required = true, nillable = false)
    public City city;

    @Override
    public String toString(){
        return String.format("Name %s, city %s", name, city);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,当我提交这样的XML文件时:

<customer>
    <city>UNKNOWN</city>
</customer>
Run Code Online (Sandbox Code Playgroud)

我将收到两个字段都设置为null的Customer实例。

是否应该没有验证例外,或者我在映射中缺少某些内容?

为了解组,我使用:

JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
Customer customer = (Customer) unmarshaller.unmarshal(in);
Run Code Online (Sandbox Code Playgroud)

java xml jaxb

4
推荐指数
1
解决办法
6616
查看次数

多个类基础知识,将print类放入main方法中

我正在尝试查看在第二课中调用所需内容的基础知识,因为教程和我正在使用的书现在使用用户输入使其过于复杂.

所以这就是我的尝试.首先是我的主类,第二个是我试图调用主要方法描述一个简单文本的类.

public class deck {
    public static void main(String[] args) {
    edward test = new edward();
    System.out.print(test);
    }
}
Run Code Online (Sandbox Code Playgroud)

其他课程:

public class edward {
    public void message(int number) {
        System.out.print("hello, this is text!");   
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么这不起作用?

如果你可以试着解释一下我在做什么,或者它是如何工作的,那将是一件好事.我正在努力解决这个问题,并且有点沮丧.

java oop

4
推荐指数
1
解决办法
151
查看次数

ESAPI 中的编码器和规范化

我了解 ESAPI 的用途,但我看到这两行在很多 ESAPI 示例中重复出现。有人可以解释一下这到底是做什么的吗?

ESAPI.encoder().canonicalize(inputUrl,false,false);
Run Code Online (Sandbox Code Playgroud)

java esapi

4
推荐指数
1
解决办法
2万
查看次数

如何关闭 Files.write

我要尝试创建目录并将数据写入该文件。我正在尝试使用 java nio 更有效地编写文件。我的疑问是如何在下面写下它之后关闭它是我的代码。请给我建议。

这是创建目录和写入大型数据文件的正确方法 [200 kb]。

    java.nio.file.Path path = java.nio.file.Paths.get(filePath);

    try {
        if (!java.nio.file.Files.exists(path)) {
            java.nio.file.Files.createDirectories(path.getParent());
            path = java.nio.file.Files.createFile(path);
            path = java.nio.file.Files.write(path, data.getBytes());
        } else {
            java.nio.file.Files.write(path, data.getBytes("utf-8"), 
                    java.nio.file.StandardOpenOption.CREATE, java.nio.file.StandardOpenOption.TRUNCATE_EXISTING);
        }
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
    }
Run Code Online (Sandbox Code Playgroud)

java io nio

4
推荐指数
1
解决办法
1万
查看次数

摇滚,纸,剪刀游戏

我有我的应用程序类Rock,Paper,Scissors游戏.我的问题是,如果我赢了两次,或者计算机赢了两次,我需要让游戏停止生成,但它会继续前进一次.我怎么能纠正这个?

import javax.swing.JOptionPane;
public class RockPaperScissorsApp
{
    public static void main(String args[])
    {
        String player1, winner;
        int player2, gamesPlayed = 1, player1Wins = 0, player2Wins = 0;
        do
        {
            RockPaperScissors myRock = new RockPaperScissors();

            player1 = JOptionPane.showInputDialog(null,
                    "Please enter your choice, Rock, Paper or Scissors");
            myRock.setPlayer1(player1);

            myRock.compute();

            winner = myRock.getWinner();
            player2 = myRock.getPlayer2();

            if(winner.equals("Player 1"))
            {
                if(player2 == 1)
                {
                    JOptionPane
                            .showMessageDialog(null,
                                    "Congratulations, you have beaten the computer! The computer chose Rock");
                }
                else if(player2 == 2)
                {
                    JOptionPane
                            .showMessageDialog(null, …
Run Code Online (Sandbox Code Playgroud)

java

3
推荐指数
1
解决办法
1780
查看次数

使用System.out.println()创建边框

反正是否有创建这种安排,而没有影响边界的String变量sh3?我真的很难过,我的Java知识几乎限于你在这里看到的内容,如果这有帮助吗?

System.out.println("###################################################"); 
System.out.println("#    **** WEST END THEATRE BOOKING SYSTEM ****    #"); 
System.out.println("#                                                 #"); 
System.out.println("#                 T I C K E T                     #"); 
System.out.println("#                                                 #"); 
System.out.println("#     Show:    "+sh3+"                            #"); 
System.out.println("#     Theatre: Her Majesty's                      #"); 
System.out.println("#     Price:   65                                 #"); 
System.out.println("###################################################");
Run Code Online (Sandbox Code Playgroud)

java

3
推荐指数
2
解决办法
1795
查看次数

我们如何区分 PC SAS 和 SAS 服务器

我们需要确定我们现在使用的是什么类型的 SAS(pc SAS 或 Server SAS)。有什么方法可以找出我们正在使用的 SAS,是指 PC SAS 还是 SAS Server?

sas

3
推荐指数
1
解决办法
410
查看次数

Pubnub在此不返回UUID列表

我最近开始研究pubnub,我正在尝试使用相同的方法制作pub-sub应用程序.我的java和Subscriber的发布者都是javascript.

以下是java中的发布商代码:

Pubnub pubnub = new Pubnub("pub-c-key", "sub-c-key");
pubnub.hereNow("my_channel", cb);
Run Code Online (Sandbox Code Playgroud)

在我的Callable for Here现在我做了一个Sysout响应,我得到以下响应:

{"message":"OK","status":200,"uuids":[],"service":"Presence","occupancy":0}
Run Code Online (Sandbox Code Playgroud)

这是我的JS代码:

<script src=http://cdn.pubnub.com/pubnub.min.js ></script>
<script>(function(){

 var pubnub = PUBNUB.init({
     publish_key   : 'pub-c-key',
     subscribe_key : 'sub-c-key'
 });

 pubnub.subscribe({
     channel : "my_channel",
     message : function(m){ document.getElementById("my_item").innerHTML = m; },
     connect : publish
 });

 function publish() {
     pubnub.publish({
         channel : "my_channel",
         message : "Connected!"
     });
 }

})();</script>
Run Code Online (Sandbox Code Playgroud)

但是当我向频道发布内容时,我会将结果显示在执行脚本的网页上. pubnub.publish("my_channel","Offer!" , callback);

为什么现在这不适用于我的情况?任何帮助或领导都可以.我已阅读pubnub文档,但我无法得到它.

javascript java publish-subscribe pubnub

3
推荐指数
1
解决办法
914
查看次数

使用 JDA 向 Discord 中的特定频道发送消息

如何要求bot向另一个与bot接收命令不同的通道(特定通道)发送消息?

假设 bot!ban @xxx在 channel 中接收消息#a,如果操作完成,bot 发送ban to user @xxx is given到 channel #b

代码Main.java

import net.dv8tion.jda.core.*;

public class Main {

    private static String token = "NDk0MjI2Mjk2OTY5MjMyMzk0.DowgCA.j0sQHnBV3wm70rzz7Q78rX0NVPU";
    public static void main(String[] args) throws Exception{

        try {
            JDA api = new JDABuilder(AccountType.BOT).setToken(token).build();
            api.addEventListener(new MyEventListner() );
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

}
Run Code Online (Sandbox Code Playgroud)

代码MyEventListner.java

import net.dv8tion.jda.core.entities.Member;
import net.dv8tion.jda.core.entities.Message;
import net.dv8tion.jda.core.entities.MessageChannel;
import net.dv8tion.jda.core.entities.Role;
import net.dv8tion.jda.core.entities.User;
import net.dv8tion.jda.core.events.message.MessageReceivedEvent;
import net.dv8tion.jda.core.hooks.ListenerAdapter;

    public …
Run Code Online (Sandbox Code Playgroud)

java discord discord-jda

3
推荐指数
1
解决办法
1万
查看次数

JDA - 将“用户”转换为“会员”

为了从不同用户中删除角色,我使用以下代码行:

Member member = e.getMember();
Guild guild = member.getGuild();

for (Role role : guild.getRoles()) {
    System.out.println("getting em!");
    System.out.println(role.getId());
    if (role.getId().equals("496415978603675658")) {
        System.out.println("he has it, boss");
        guild.getController().removeSingleRoleFromMember(member, role)
                    .complete();
        guild.getController().addSingleRoleToMember(member, jda.getRoleById("496415995569766410"))
                    .complete();
    }
}
Run Code Online (Sandbox Code Playgroud)

它工作得很好,但问题是它只适用于 Member 对象 ( e.getMember),否则我不知道如何检索 Member 对象。我将另一个用户存储为用户对象,但我不知道如何将他转换为成员。

java discord discord-jda

2
推荐指数
1
解决办法
1702
查看次数

标签 统计

java ×9

discord ×2

discord-jda ×2

esapi ×1

io ×1

javascript ×1

jaxb ×1

nio ×1

oop ×1

publish-subscribe ×1

pubnub ×1

sas ×1

xml ×1